如何获取已经解雇的UILocalNotification

时间:2014-03-29 07:12:10

标签: ios objective-c uilocalnotification

我正在我的应用中实施UILocalNotification,并按预期传递通知。据我了解,通知的处理方式如下:

  1. 当应用程序未运行且用户单击通知时,应用程序会通过applicationDidFinishLaunching方法中的选项接收通知。
  2. 当应用程序处于活动状态时,它会通过didReceiveLocalNotification方法接收通知。
  3. 当应用程序在后台并且用户点击通知时,它会通过didReceiveLocalNotification方法接收通知。
  4. 但是有一个我无法覆盖的案例,那就是当通知被触发时,应用程序在后台,只需点击应用程序图标即可激活应用程序(而不是点击通知)。在这种情况下,没有UILocalNotification可用。但我仍然想知道自上次活动以来已经触发了通知,因为通知中有一些信息要在其userInfo属性中执行。

    目前,我通过检查徽章编号是否已经“解决”了它。 applicationDidBecomeActive中的0,但这只允许我向用户显示一般消息。我希望能够知道哪些通知导致徽章编号更新。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

几天前我遇到了完全相同的问题。幸运的是,有一种相当简单的方法可以覆盖这种情况!

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

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

进一步解释here