One of the greatest new features that is included in iOS4 is the power that developers have to deliver local notifications. At the time that the first beta was released in April I was writing specs/requirements and project timeline for a potential app which would have ended up taking me about 5 months to develop. A large part of the project schedule dealt with having to setup/maintain user reminder preferences...the number of reminders, frequency of each one, time zones, etc. I tried to think of ever solution that I could that didn't involve the server component, but there really wasn't any other way.
UILocationNotification to the rescue. After looking over the API docs, Apple had provided exactly what I needed and I was able to cut out 2.5 months from the project schedule because of it.
I was able to create an POC app using UILocationNotifications in literally 5 minutes. It involved two easy steps:
- In the app delegate class I added the following method to verify that the event was fired off if the app was running. -(void)application:(UIApplication *)application didReceiveLocationNotification:(UILocationNotification *)notification;
- In the -(void) viewDidLoad method of my controller you alloc/init a new UILocationNotification object, set the fireDate which is an NSDate object, what time zone you want, what the notification message(body) should be and then add the UILocationNotification object to the UIApplication scheduleLocalNotification method
There are two possible end results. The first being that the event is fired off while the app is running in which case you will not see anything. Hence, why I added the NSLog to the didReceiveLocationNotification method. The second is if you close the app before the notification has fired and in that case you will receive the alert box with your message.
Note: This was compiled with iOS4 GM and tested on iPhone 3G/3GS