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