应用程序未运行时的 iOS 10 远程通知

Posted

技术标签:

【中文标题】应用程序未运行时的 iOS 10 远程通知【英文标题】:iOS 10 Remote Notifications When App Not Running 【发布时间】:2017-03-04 00:11:20 【问题描述】:

当我收到远程通知时,我更新了保存到 UserDefaults 的计数器,并且还显示了本地通知。当应用程序处于前台、后台和挂起状态Ref 时,一切都按预期工作。当应用处于未运行状态时,我的计数器不会更新,也不会显示我的本地通知。

据我了解,当应用程序完全关闭时,我应该能够接收和处理远程通知。网上有几篇文章声称,当远程通知在未运行状态下到达时,应调用 application:didFinishLaunchingWithOptions: 后跟 application:didReceiveRemoteNotification:fetchCompletionHandler: 但在我的情况下不是。

在未运行状态下是否可以接收远程通知?

【问题讨论】:

参考这个问题:***.com/questions/41345889/… 【参考方案1】:

如果您的应用是 VoIP 应用并且您正在通过 PushKit 使用 VoIP 推送,那么推送通知将从终止状态启动您的应用以传递通知。如果您使用标准推送通知,那么如果应用程序终止,您的应用程序将不会收到通知。您可以包含一条带有“静默”通知的警报文本,在您的应用终止时将向用户显示该通知,以提示他们启动您的应用。

【讨论】:

所以通知只会显示在通知区域但不会调用 didReceiveRemoteNotification: 方法,对吗?【参考方案2】:

首先,听起来您设置了静音通知。将alert 数据添加到推送通知后(标题、正文等信息。您可以在here 上找到更多信息),它将开始显示在锁定屏幕上。

其次,如果您的应用程序处于 Not Running 状态,则它不可能从推送通知启动,无论是静默还是其他方式。 The documentation on this 实际上是不正确的,因为它指出只有在用户退出应用程序时才会启动应用程序。但是,这实际上也适用于非运行状态下的任何情况,例如,如果您的应用程序自安装/重新启动后从未启动,或者由于内存而退出(相当常见的情况 - ios 会清除尚未启动的应用程序)最近没有按要求运行)。

【讨论】:

【参考方案3】:

你有没有在app是后台的时候勾选这个标记?

【讨论】:

以上是关于应用程序未运行时的 iOS 10 远程通知的主要内容,如果未能解决你的问题,请参考以下文章

远程通知不会在后台启动应用程序

如何清除 iOS 的远程推送通知?

远程推送通知

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

当 iOS 设备被锁定并且我没有立即响应时接收远程通知

如何在演示之前更改远程通知的呈现方式?