我正在我的应用中实施UILocalNotification
,并按预期传递通知。据我了解,通知的处理方式如下:
applicationDidFinishLaunching
方法中的选项接收通知。didReceiveLocalNotification
方法接收通知。didReceiveLocalNotification
方法接收通知。但是有一个我无法覆盖的案例,那就是当通知被触发时,应用程序在后台,只需点击应用程序图标即可激活应用程序(而不是点击通知)。在这种情况下,没有UILocalNotification
可用。但我仍然想知道自上次活动以来已经触发了通知,因为通知中有一些信息要在其userInfo
属性中执行。
目前,我通过检查徽章编号是否已经“解决”了它。 applicationDidBecomeActive
中的0,但这只允许我向用户显示一般消息。我希望能够知道哪些通知导致徽章编号更新。有没有办法实现这个目标?
答案 0 :(得分:0)
几天前我遇到了完全相同的问题。幸运的是,有一种相当简单的方法可以覆盖这种情况!
将通知保存在NSUserDefaults中,使用NSKeyedArchiver将其转换为NSData。如果您使用存储在通知的userInfo字典中的相同密钥,则可能更容易。
使用NSKeyedUnarchiver将其作为UILocalNotification返回。然后,您可以根据需要处理通知(或使用cancelLocalNotification方法将其删除)。
进一步解释here。