Setting local notification (one for everday and other for future dates)in iphone
Im implementing a reminder app.There are two reminders (one for everyday and other for future dates.)everyday reminder is working fine.In the app there are some tips and when user like one tip,i want it to be able to save that tip for some date in future(eg:august 29 9.00pm).can anyone help me what is the correct path for implementing this scenario.All the tips are saved in an array.How can i save the different time and dates user selected from date picker into an array and fire the local notification at correct time and displaying the tip user saved for that day. (i tried using NSUserdefaults for saving the day and time and also retrieving the index of tip from array and co开发者_如何学Gomparing both but not working).
As mentioned above, you can do this via UILocalNotification
. It sounds like you are having trouble with future scheduling the notification? Try the code snippet below:
// get app instance
UIApplication *app = [UIApplication sharedApplication];
// create local notif
UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease];
if (notification) {
NSDate *oneMinuteFromNow = [[NSDate date] dateByAddingTimeInterval:60];
notification.fireDate = oneMinuteFromNow;
notification.timeZone = [NSTimeZone defaultTimeZone];
NSString *notificationMessage = @"Alarm";
notification.alertBody = notificationMessage;
notification.soundName = UILocalNotificationDefaultSoundName;
// schedule notification
[app scheduleLocalNotification:notification];
// fire notification right away
[app presentLocalNotificationNow:notification];
}
The variable "oneMinuteFromNow"
can be updated to reflect the future dating you need. FYI, if you need to repeat the notification, there are some limitations to the repeat intervals that Apple provides you with (for instance they can only repeat every NSSecondCalendarUnit, NSMinuteCalendarUnit, NSHourCalendarUnit, NSWeekdayCalendarUnit,
etc).
Sounds like you might be able to use UILocalNotification to deliver the notifications. Your app does NOT have to be running for a local notification to be delivered. UILocalNotifications do have their limitations.
You need to schedule all your reminders with UILocalNotification before your app exits. You can have up to 64 notifications per app and when the user opens your app you can add more to replace the ones that have already fired.
The problem is that your App needs to be running at the time in the future that the user wants to be notified, while the iOS or the user can kill your App at any time, or power cycle their device.
One way to do this would be to have a background daemon that runs all the time, but that is not permitted by the iOS Developer Agreement.
On *NIX systems you can use cron. While the iOS is based on FreeBSD, a form of UNIX, either it does not have cron or it is not available to App developers. I'm not entirely certain of that, so I suggest Googling around to see whether there is a way to implement periodic tasks on the iOS. But I'm pretty sure there isn't, or I would have heard of it by now.
However, you could use Push Notifications. That would require that you also write a web application to save your users' notification dates in a database, that would then issue a push notification via Apple's push notification server at the desired time.
From an end-user perspective this is just what you want, but it also means that your total app, including the web application and database, just got a whole lot more complicated compared to what it would take to implement it with cron or a daemon.
There are push notification hosting services though, that could take care of most of what you need for a very modest fee.
精彩评论