如何为以下情况安排本地通知?

专家,我有一个情景,我需要通知用户一天三次(上午,下午,晚上)。 而且这些通知的时间将根据每个date的数据库值每天有所不同。

这三个通知是可configuration的。 含义用户可能只是select设置下午和晚上,而在设置下closures早上通知。

根据我的理解,我可以使用本地通知来实现这一点。

我可以做到以下几点: – 在应用程序退出之前,在didFinishLaunchingWithOptions内部,我可以检查下一个通知是否到期,是否设置(开/关)。 如果它被设置,我安排它。 如果没有,我继续下一个通知types,并做同样的事情。 如果所有的通知都closures了,显然没有通知会被安排。

现在,当通知显示,我看到两个button“closures”和“查看”的警报。 如果用户select“查看”我的应用程序回到活动状态,并在用户退出下一个通知安排。

到现在为止还挺好。

现在如果用户select“closures”,我该怎么办? 它不会启动我的应用程序,因此下一个通知不会被安排?

我如何做到这一点? 有没有更好的方法来做到这一点?

帮帮我! 帮帮我! 帮帮我!

您可以一次安排所有(或多个)通知。 您无需等待用户查看您的应用即可安排下一次通知。

从UILocalNotification的文档中 ,

应用程序可以只有有限数量的计划通知; 系统保持最快的64个通知(自动重新安排的通知作为单个通知计数)并丢弃其余

所以,如果你每天有3个通知,你可以预先安排3个星期的通知。 我想如果用户一个月没有打开你的应用程序,你仍然会遇到问题,但是你需要担心这种情况吗?

无论如何,我只是想确定一下,你不需要一次安排这些通知。

例:

UILocalNotification* n1 = [[UILocalNotification alloc] init]; n1.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60]; n1.alertBody = @"one"; UILocalNotification* n2 = [[UILocalNotification alloc] init]; n2.fireDate = [NSDate dateWithTimeIntervalSinceNow: 90]; n2.alertBody = @"two"; [[UIApplication sharedApplication] scheduleLocalNotification: n1]; [[UIApplication sharedApplication] scheduleLocalNotification: n2]; 

因此,即使用户在第一个通知出现时selectclosures ,第二个仍然会被传送。

顺便说一句, didFinishLaunchingWithOptions方法在应用程序启动后立即被调用,而不是在closures之前调用。 也就是说,您可以随时安排新的通知。

您也可以使用repeatInterval属性,以便无限期地重新安排自己。 但是,您仅限于NSCalendarUnit的单位。 有关更多信息,请参阅文档