ios在后台处理推送通知

Posted

技术标签:

【中文标题】ios在后台处理推送通知【英文标题】:ios handle pushnotification in background 【发布时间】:2013-06-12 14:20:27 【问题描述】:

我想保存当应用程序处于后台状态时到达的推送通知。我知道

-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

当应用程序处于前台或后台时调用此委托方法(如果用户只是点击收到的通知)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

该方法仅在应用启动时调用一次。

如果用户没有点击通知怎么办?在这种情况下,如何将该通知的数据保存在我的应用程序的数据库中?

【问题讨论】:

【参考方案1】:

对于这种情况,您无法将数据保存在“[您的]应用程序的数据库”中;相反,您将数据保存在服务器上的数据库中,这是首先生成 PushNotification 的地方。然后,当您的应用启动时,它会查询您的数据库以获取通知数据。

【讨论】:

您可以通过通知设置徽章计数,只有当计数大于零时,才查询服务器。 thanx @GoZoner 你的回答对我也很有价值。 @MarcusAdams 这两个答案对我都有帮助,因为第一个解决了我的困惑,第二个给了我如何在应用程序处于后台状态时处理推送的答案。我别无选择,否则我选择了这两种解决方案作为答案。【参考方案2】:

如果用户没有点击通知,您将无法保存该数据。 即使用户通过点击启动图标打开应用程序,应用程序也不会收到该数据。

还请记住,通知的设计是提供小的有效负载来提醒用户。 一旦用户启动应用程序,应用程序就可以下载您要保存的真实数据。

【讨论】:

如果用户没有点击通知,只要您的应用程序正在运行,您的应用程序仍然会收到通知,但在您的应用程序激活之前您无法处理它。这在 ios7 中发生了变化。我相信即使应用未处于活动状态(但在后台运行),您的应用也能够处理通知。 @MarcusAdams 你知道有什么文档/资源可以指导我们了解如何在 iOS7 的后台获取远程推送通知数据吗?

以上是关于ios在后台处理推送通知的主要内容,如果未能解决你的问题,请参考以下文章

在后台接收推送通知 iOS

在 iOS 中处理静默推送通知的最佳方法是啥

当应用程序在后台时处理本地推送通知

iOS 10 推送通知点击处理程序

当应用程序在后台时,使用 React Native 的静默 iOS 推送通知

ios 应用未运行时推送通知单击处理程序