我们可以将收到的推送通知保存在本地的 plist 中吗?
我需要在角标(Badge) View 中显示未读推送通知的数量,就像 applicationIconBadgeNumber 一样。但它应该显示在应用程序内部,而不是图标角标(Badge) View 。
所以,我的问题是我们可以在应用程序的所有状态(运行、后台和退出)中保存收到的推送通知吗?
我已经实现了推送通知,如果需要我可以分享代码
最佳答案
如果您添加了后台模式 -> 远程通知(在功能选项卡下)
然后您就可以在后台接收推送通知 - 在这个函数中(应该位于您的 AppDelegate 中):
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
请注意,当此函数在后台调用时 - 它会唤醒您的应用程序,然后您调用:
completionHandler(UIBackgroundFetchResultNewData);
停止应用程序的后台进程。 (否则在 30 到 60 秒内,iOS 将终止您的应用程序)。
(因此 - 您应该能够在应用程序处于后台时接收推送通知,保存它们,保存计数。)
需要知道的一件事 - 如果用户强制关闭应用程序,则不会调用它。
或者看在上帝的份上——当用户最终打开应用程序时使用它:
[UIApplication sharedApplication].applicationIconBadgeNumber.
一旦打开应用程序,您必须将其值重置为 0,但在此之前 - 您可以读取它的值以了解您收到了多少推送通知。 (鉴于事实,它会从服务器提供正确的角标(Badge)编号)
关于ios - 保存收到的远程推送通知 - ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31131585/