通过应用程序图标打开时的 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 句柄?的主要内容,如果未能解决你的问题,请参考以下文章

应用打开时MainActivity跳转到栈顶

Stack Navigator 抽屉图标单击抽屉未打开但滑动打开时

Android - 从CH Play打开时恢复应用程序

如何处理后退按钮android以退出应用程序并在首页中打开时关闭本机导航侧菜单

通过推送通知打开时混合应用程序休眠

通过 Safari 打开时,Firebase 动态链接不会重定向到应用程序