【发布时间】:2020-04-20 19:07:02
【问题描述】:
我遇到了一个非常奇怪的问题,我无法确定根本原因。直到几周前,我们的应用程序才能正常运行 ios12 和 ios13 的后台/静默通知。所以一点背景信息:
- 我们使用 SNS 发送视觉/听觉和静音背景通知。
- 我们知道 ios13 需要 apns-push-type 标头。 SNS 自动处理这个新标头,我们的手动测试(即没有 SNS)也产生了相同的结果。
- 静默通知(即内容可用:1)在 ios13.3(或更高版本)上总是失败,但在 ios12.4(及更低版本)上总是有效。
- 在我们的 swift 代码中,我们使用 :didReceiveRemoteNotification:fetchCompletionHandler 进行静默通知。我们还使用了 userNotificationCenter(带有 willPresent 和 didReceive)。每当我们发送声音/视觉通知时,将在 ios12 和 ios13 上触发 willPresent。在 ios12 上,静默通知触发 didReceiveRemoteNotification:fetchCompletionHandler 但在 ios13 上没有。
- 在我们的测试过程中,我们成功发送了一个空警报类型来触发 ios13 上的静默通知,这也适用于 ios12(这会触发 willPresent)。这对我来说就像是一个 hack,因为它可能会暂时唤醒设备,如果应用程序在后台运行,通知将会消失。
- 在其他视图控制器中,我们正在观察 NotificationCenter 以了解收到的消息以采取适当的措施。
在我看来,{"content-available": 1} 永远不会在 ios13 上运行,但在 ios12 上运行。 didReceiveRemoteNotification:fetchCompletionHandler 也永远不会在 ios13 上被调用,但会在 ios12 上调用。我们使用静默通知(即 content-available:1)的目的是在应用程序处于前台或后台时发生更改时刷新我们服务的详细信息。
任何帮助将不胜感激。
【问题讨论】:
-
@matt:感谢您分享链接,但我认为这与此处无关,主要是因为静默通知未到达或未正确处理(简单的打印语句根本不显示任何内容) ios13 但他们在 ios12 上使用相同的代码。
-
这个链接告诉你如何观察通知到达系统级别。
标签: swift apple-push-notifications amazon-sns