ios – 如何安排以下场景的本地通知?

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

这三个通知是可配置的。意思是用户可能只是选择设置下午和晚上,同时在设置下关闭早上通知。

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

我可以做以下事情:
– 在应用程序退出之前,在didFinishLaunchingWithOptions内部,我可以检查下一个通知是什么,是否设置(开/关)。如果我设置了我安排。如果不是,我继续下一个通知类型,做同样的事情。如果所有通知都关闭,显然不会安排任何通知。

现在当通知出现时,我可以通过两个按钮“关闭”和“查看”来查看警报。
如果用户选择“查看”,我的应用程序将恢复为活动状态,并且在用户退出下一个通知之前已安排。

到现在为止还挺好。

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

我该如何实现?
有什么更好的办法吗?

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

最佳答案
您可以一次安排所有(或多个)通知。您不需要等待用户查看您的应用程序来安排下次通知。

the docs on UILocalNotification

An application can have only a limited number of scheduled
notifications; the system keeps the soonest-firing 64 notifications
(with automatically rescheduled notifications counting as a single
notification) and discards the rest

因此,如果您每天有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];

因此,即使用户在第一个通知出现时选择关闭,第二个通知将仍然被发送。

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

转载注明原文:ios – 如何安排以下场景的本地通知? - 代码日志