首页 文章

如何获取已经解雇的UILocalNotification

提问于
浏览
4

我正在我的应用程序中实现 UILocalNotification ,并按预期交付通知 . 据我所知,通知的处理方式如下:

  • 当应用程序未运行且用户单击通知时,应用程序将通过 applicationDidFinishLaunching 方法中的选项接收通知 .

  • 当应用程序处于活动状态时,它会通过 didReceiveLocalNotification 方法接收通知 .

  • 当应用程序在后台并且用户单击通知时,它会通过 didReceiveLocalNotification 方法接收通知 .

但是有一个我无法覆盖的案例,那就是当通知被触发时,应用程序在后台,只需单击应用程序图标(而不是单击通知)即可激活应用程序 . 在这种情况下,没有 UILocalNotification 可用 . 但我仍然想知道自上次活动以来已经触发了通知,因为通知中有一些信息要在其 userInfo 属性中执行 .

目前我通过检查 applicationDidBecomeActive 中的徽章编号> 0来确定"solved",但这只允许我向用户显示一般消息 . 我希望能够知道导致徽章编号更新的通知 . 有没有办法实现这个目标?

1 回答

  • 0

    几天前我遇到了完全相同的问题 . 幸运的是,有一个相当简单的方法来涵盖这种情况!

    将通知保存在NSUserDefaults中,使用NSKeyedArchiver将其转换为NSData . 如果您使用存储在通知的userInfo字典中的相同密钥,则可能更容易 .

    使用NSKeyedUnarchiver将其作为UILocalNotification返回 . 然后,您可以根据需要处理通知(或使用cancelLocalNotification方法删除它) .

    进一步解释here .

相关问题