保存收到的远程推送通知 - 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的主要内容,如果未能解决你的问题,请参考以下文章

iOS swift中没有收到推送通知?

删除 iOS 应用后保存推送通知数据

收到带有数据的远程通知时激活 iOS 应用程序

处理远程推送通知格式

更新远程推送通知上的 UIMutableUserNotificationAction 按钮标题

iOS远程推送点击消息跳转到指定页面