我第一次使用 UILocalNotifications。主要处理重复通知。大多数都是有道理的,除了一件事。
Apple 文档说明了在触发本地通知时处理本地通知的几种情况。
首先,用户在 App 外“点击通知”的情况:
如果通知是警报并且用户点击操作按钮(或者,如果设备被锁定,则拖动打开操作滑块),则启动应用程序。在 application:didFinishLaunchingWithOptions: 方法中,应用程序委托可以使用 UIApplicationLaunchOptionsLocalNotificationKey 键从传入的选项字典中获取 UILocalNotification 对象。委托可以检查通知的属性,如果通知在其 userInfo 字典中包含自定义数据,它可以访问该数据并相应地处理它。
它还说明了当用户在应用程序内时会发生什么情况:
如果在系统传递通知时应用程序处于最前面且可见,则不会显示警报,不会标记图标,也不会播放声音。但是,如果应用程序委托实现了 application:didReceiveLocalNotification: ,则会调用它。UILocalNotification 实例被传递到此方法中,并且委托可以检查其属性或访问 userInfo 字典中的任何自定义数据。
在这两种情况下,开发人员都可以访问 uilocalnotification,然后决定如何处理它。但是,在第三种情况下 - 当应用程序之外的用户看到并忽略通知,然后启动应用程序时,没有调用任何方法让应用程序知道之前触发了哪些通知?
起初我以为这句话是在描述这种行为,但现在我不确定:
另一方面,如果本地通知仅标记应用程序图标,并且用户响应启动应用程序,则调用 application:didFinishLaunchingWithOptions: 方法,但选项字典中不包含 UILocalNotification 对象。
第三种情况如何处理?我如何知道触发了哪些本地通知?我是否需要遍历我的列表并自己检查所有时间?有没有更好的方法来实现这一点?