通过应用程序图标打开时的 UILocalNotification 句柄?
Posted
技术标签:
【中文标题】通过应用程序图标打开时的 UILocalNotification 句柄?【英文标题】:UILocalNotification handle when opened via App icon? 【发布时间】:2013-05-25 19:43:02 【问题描述】:我是第一次使用 UILocalNotifications。主要处理重复通知。大部分都是有道理的,除了一件事。
Apple Documentation 说明了在触发本地通知时处理本地通知的几种情况。
首先,用户在 App 外“点击通知”的情况:
如果通知是警报并且用户点击操作按钮 (或者,如果设备被锁定,拖动打开操作滑块), 应用程序启动。在里面 应用程序:didFinishLaunchingWithOptions:方法应用程序 delegate 可以从传入的获取 UILocalNotification 对象 选项字典通过使用 UIApplicationLaunchOptionsLocalNotificationKey 键。代表可以 检查通知的属性,如果通知 在其 userInfo 字典中包含自定义数据,它可以访问 数据并进行相应的处理。
它还说明了当用户在应用内时会发生什么情况:
如果应用程序在系统交付时最重要且可见 通知,不显示警报,没有标记图标,也没有声音 玩过的。但是, application:didReceiveLocalNotification: 是 如果应用程序委托实现它,则调用它。这 UILocalNotification 实例被传递到这个方法中,并且 委托可以检查其属性或从 用户信息字典。
在这两种情况下,开发人员都可以访问 uilocalnotification,然后决定如何处理它。但是,在第三种情况下 - 当应用程序外部的用户看到并忽略通知,然后启动应用程序时,没有调用任何方法让应用程序知道之前触发了哪些通知?
起初我以为这句话是在描述这种行为,但现在我不确定了:
另一方面,如果本地通知仅标记 应用程序图标,用户响应启动应用程序, application:didFinishLaunchingWithOptions: 方法被调用,但是 选项字典中不包含 UILocalNotification 对象。
我该如何处理第三种情况?我如何知道触发了哪些本地通知?我是否需要遍历我的列表并自己检查他们的所有时间?有没有更好的方法来做到这一点?
【问题讨论】:
【参考方案1】:您需要跟踪通知发生的情况。我的意思是,因为通知已经触发,并且用户没有因为通知而启动应用程序,而且您的应用程序在通知时没有运行,您需要检查您的来源以验证以前是否预定的通知触发日期已过。
【讨论】:
感谢您的回答。经过进一步研究,我发现我的问题与这篇文章重复:***.com/questions/16469721/… 嗨@dtmland 你找到这个问题的解决方案了吗...可以分享一下吗??以上是关于通过应用程序图标打开时的 UILocalNotification 句柄?的主要内容,如果未能解决你的问题,请参考以下文章
Stack Navigator 抽屉图标单击抽屉未打开但滑动打开时