我怎么可以安排以下情形本地通知?(How can I schedule local notifica

2019-07-04 18:12发布

专家,我有一种情况,其中我需要通知用户每天(上午,下午,晚上)三次。 而对于这些通知的时机将是每天不同,根据每个日期数据库值。

这三个通知进行配置。 含义用户可能只是选择设置下午和晚上,而在设置中关闭早上通知。

按我的理解,我可以利用本地通知实现这一目标。

我能做到以下几点: - 应用程序退出之前,内didFinishLaunchingWithOptions,我可以检查哪些是由于下一个通知,是设置(开/关)。 如果设置我安排吧。 如果不是我移动到下一个通知类型和做同样的事情。 如果所有的通知已关闭,显然,没有通知将如期举行。

现在,当该通知显示了,我能看到有两个按钮“关闭”和“查看”警报。 如果用户选择“查看”我的应用程序是回活动和用户在退出前一个通知计划。

到现在为止还挺好。

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

如何实现这一目标? 有没有更好的方式来做到这一点?

救命! 救命! 救命!

Answer 1:

你可以简单地在同一时间安排所有(或多个)的通知。 你并不需要等待用户查看您的应用程序来安排接下来的通知。

从上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];

因此,即使用户选择关闭第一通知出现时,第二个也还是会提供。

顺便说一句,在didFinishLaunchingWithOptions方法被调用应用程序启动之后,它关闭不之前。 这就是说,你可以安排新的通知,只要你想。



Answer 2:

您也可以使用repeatInterval财产,使他们重新安排自己下去。 但是,您仅限于单位NSCalendarUnit 。 查看文档更多信息



文章来源: How can I schedule local notification for the following scenario?