ios - 保存收到的远程推送通知 - ios

标签 ios objective-c iphone push-notification

我们可以将收到的推送通知保存在本地的 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/

相关文章:

iphone - UIImageView 边框颜色

ios - 应用程序的图标颜色在 iPhone 上总是比在 iOS 模拟器上或在线查看图像时更暗

objective-c - iOS AVFoundation 将视频流式传输到 OpenGL 纹理

ios - Swift 3 - 如何让计时器在后台工作

ios - 在不继承 UINavigationController 的情况下以编程方式更改 ViewController 的方向

ios - 防止相机基于地理位置工作(iOS、Android)

ios - 将 'UITableViewCell' 类型的值转换为自定义单元格

ios - 我如何知道项目中的当前cocos2d版本?

ios - NSMethodSignature 的 BOOL 编码错误

iOS map GPS 位置在 map 上实现蓝球定位和箭头标志