ios - 如何为以下场景安排本地通知?

标签 ios uialertview uilocalnotification

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

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

据我所知,我可以使用本地通知来实现这一点。

我可以做到以下几点: - 在应用程序退出之前,在 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 - 如何为以下场景安排本地通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13773123/

相关文章:

ios - 检测来自另一个 VC 的警报是否可见

ios - 如何将委托(delegate)设置为 QLPreviewController 的 UIActivityViewController?

ios - Swift 3 沿用户绘制的路径生成均匀间隔的 SKSpriteNodes

ios - calayer 框架怎么会慢,我们可以做些什么来优化它?

ios - Split View到 iOS 中的另一个全 View Controller

iphone - 通知发生后 UILocalNotification 显示 View ?

iphone - 来自 UIAlertView 的 UIActionSheet

ios - 当用户单击 alertview 时从 sqlite 数据库中删除一条记录

ios - 孤立的 UILocalNotification - 已确认

ios - 判断是否允许本地通知