保存收到的远程推送通知 - ios
Posted
技术标签:
【中文标题】保存收到的远程推送通知 - ios【英文标题】:Save received remote push notifications - ios 【发布时间】:2015-06-30 06:57:27 【问题描述】:我们可以将收到的推送通知本地保存在 plist 中吗?
我需要在徽章视图中显示未读推送通知的数量,就像 applicationIconBadgeNumber 一样。但它应该显示在应用程序内部,而不是作为图标徽章视图。
那么,我的问题是我们可以将收到的推送通知保存在应用程序的所有状态(运行、后台和退出)中吗?
我已经实现了推送通知,如有需要我可以分享代码
【问题讨论】:
不,当应用程序处于后台或关闭时,您无法保存通知,仅当它正在运行时。如果应用程序在后台或关闭,如果用户打开应用程序点击推送,您可以获得推送信息 【参考方案1】:如果您添加了后台模式 -> 远程通知(在功能选项卡下)
那么您就可以在后台接收推送通知 - 在此功能中(应该位于您的 AppDelegate 中):
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
请注意,在后台调用此函数时 - 它会唤醒您的应用程序,然后您调用:
completionHandler(UIBackgroundFetchResultNewData);
停止应用程序的后台进程。 (否则在 30 - 60 秒内,ios 将杀死您的应用)。
(因此 - 您应该能够在应用程序处于后台时接收推送通知,保存它们,保存计数。)
要知道的一件事 - 如果用户强制关闭应用程序,那么这将不会被调用。
或者看在上帝的份上 - 当用户最终打开应用程序时使用它:
[UIApplication sharedApplication].applicationIconBadgeNumber.
一旦打开应用程序,您必须将其值重置为 0,但在此之前 - 您可以读取它的值以了解您收到了多少推送通知。 (鉴于事实,它会从服务器提供正确的徽章编号)
【讨论】:
【参考方案2】:是的,您可以通过这行代码获取徽章编号:- NSInteger count = [UIApplication sharedApplication].applicationIconBadgeNumber;
并且可以做任何你想做的事情,但只要你的应用程序启动,你就可以得到它。为了像徽章计数一样显示它,你可以使用红色圆圈的图像和标签。
【讨论】:
以上是关于保存收到的远程推送通知 - ios的主要内容,如果未能解决你的问题,请参考以下文章