iOS - 当应用程序被用户强制退出时处理静默推送通知

Posted

技术标签:

【中文标题】iOS - 当应用程序被用户强制退出时处理静默推送通知【英文标题】:iOS - Handling Silent Push Notifications When App Is Force-Quit By User 【发布时间】:2015-04-27 22:56:08 【问题描述】:

我目前在 ios 中遇到推送通知问题。

我的应用收到包含标识符的静默推送通知。然后使用此标识符从创建本地通知的远程服务器获取数据。

据我所知,如果用户强制退出应用程序(即通过双击主页按钮并滑动关闭应用程序),则静默推送通知不会传递到 didReceiveRemoteNotificationAppDelegate 类 [1] [2] 中的 /em> 方法,从而阻止应用程序进行任何类型的处理。

我对处理上述情况进行了大量研究。但是,无法找到明确的答案,并希望有人可以帮助我或为我指明正确的方向。

TLDR:当用户强制退出我的应用,但我仍需要处理静默通知时,我该怎么办?

更多信息: 我的应用只需要支持iOS8+。

[1]https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW1

通知负载 如果通知到达时目标应用程序未运行,则会播放或显示警报消息、声音或徽章值。如果应用正在运行,系统会将通知作为 NSDictionary 对象传递给应用委托。

[2]https://***.com/a/19202487/2472819

【问题讨论】:

简短回答:在这种情况下您无能为力。在我看来,如果用户强行退出一个应用程序,他无权期望该应用程序能够正常运行。 强制退出是一种杀死表现不佳的应用程序的方法,这可能是它阻止处理通知的原因。不幸的是,一些在线资源仍然告诉用户关闭所有应用程序,尽管这是不必要的。 疯狂的是,我看到很多人强制关闭应用程序以节省电量。甚至是开发人员。 【参考方案1】:

以前在 iOS 7 及之前的版本中,一旦用户强制退出应用程序,它将无法运行和后台任务,包括位置监控、content-available:1 的推送通知处理等。

但问题是这种行为没有记录在案。原因是它可能会在新的 iOS 更新中发生变化,而苹果不想过早地敲定棺材。在 iOS 8 中,PushKit 被引入并且应该能够处理强制退出场景。详情请查看本教程:https://zeropush.com/guide/guide-to-pushkit-and-voip

【讨论】:

以上是关于iOS - 当应用程序被用户强制退出时处理静默推送通知的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 iOS 13 中的应用程序在被用户终止时通过静默推送在后台唤醒

强制退出应用程序在后台模式下的静默通知

使用firebase发送静默推送通知,以便在应用程序被杀死时唤醒它

当用户通过向上滑动强制退出应用程序时,可操作的推送通知不会出现在 iOS 8+ 设备上

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

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