如何获得已经发射的UILocalNotification
我在我的应用程序中实现UILocalNotification
,并按预期发送通知。 据我所知,通知是这样处理的:
- 当应用程序没有运行,并且用户点击通知时,
applicationDidFinishLaunching
通过applicationDidFinishLaunching
方法中的选项接收通知。 - 当应用程序处于活动状态时,它通过
didReceiveLocalNotification
方法接收通知。 - 当应用程序在后台,并且用户单击通知时,它通过
didReceiveLocalNotification
方法接收通知。
但有一种情况我一直无法覆盖,那就是当一个通知被触发,应用程序在后台,而应用程序只是通过点击应用程序图标(而不是点击通知)来激活。 在这种情况下,没有可用的UILocalNotification
。 但是我仍然想知道自从上次激活通知以来,通知已经触发了,因为通知中有一些信息要在它的userInfo
属性中执行。
目前我已经通过检查applicationDidBecomeActive
中的徽章号是否为0来“解决”它,但是这只允许我向用户显示一般消息。 我宁愿能够知道什么通知导致徽章号码更新。 有什么办法可以做到这一点?
几天前我也有同样的问题。 幸运的是,有一个相当简单的方法来覆盖这种情况!
将通知保存在NSUserDefaults中,使用NSKeyedArchiver将其转换为NSData。 如果使用存储在通知的userInfo字典中的相同密钥,可能会更容易一些。
使用NSKeyedUnarchiver将其重新设置为UILocalNotification。 然后,您可以按照您认为合适的方式处理通知(或使用cancelLocalNotification方法将其删除)。
这里进一步解释。
- 受支持的平台,基础SDK,仅在pod更新后恢复主动体系结构设置
- 'BOOL'(又名'signed char')到'id'的隐式转换,objc_setAssociatedObject
- UIPageControl和UIPageviewController不同步
- OpenCV UIImageToMat链接器在xcode中失败
- 用随机位置的button填充视图
- 如何在Monotouch中绑定NSObject <EAAccessoryDelegate>?
- FBSession:尝试对未打开的会话重新授权权限
- 使用NSURLSession的HTTP PUT方法
- 无法为Xcode 4.5中的Single ViewController类加载两个nib(.XIB)