和这里的许多人一样,我一直在寻找一种可靠的方式来将推送通知传送到应用程序以进行后台处理。我最终决定使用 PushKit 并且一切正常并且该应用程序被 AppStore 接受,即使它不是 VoIP 应用程序。我正在使用 AWS SNS(简单通知服务)来处理后端推送处理。但是,如果您发送过多的推送通知,iOS 也会限制 VoIP 通知的发送。作为一个简单的测试,我可以在 2 到 3 分钟内发送多个 VoIP 通知,它们将迅速传送并由应用程序在后台处理。在我等待大约 10 分钟后(在锁定 iPad 并等待 iOS 将应用程序置于 sleep 状态之后),iOS 不会立即发送后续的 VoIP 推送。 AWS 正在推送通知,但 iOS 并未将其传送到应用程序。我知道这一点,因为只要我插入设备,应用程序就会处理通知。顺便说一句,如果设备保持插入状态,所有通知都会立即传送和处理。
所以我的问题是:其他人是否也注意到 VoIP 推送的这种行为?尽管 iOS 文档表明 VoIP 推送会立即传送,但如果 iOS 认为在一段时间内推送“过多”,iOS 似乎确实会限制它们。
最佳答案
我想,当您将应用程序置于后台时,您就会收到推送通知。但是当您的应用程序终止时,则不会收到推送通知。
当您的应用处于终止(终止)状态时,它可能会崩溃。
Pushkit 静默通知始终具有更高的优先级,并且始终运行良好。
尝试以下操作以找出原因和解决方案。
(1) 在 killed (terminated) 状态下调试你的应用程序,比如应用程序是否崩溃
(2) 使用 pem 和证书通过简单的 php 代码发送静默通知(案例背景和被杀死(终止))
(3) 检查 pushkit 集成步骤,如果你的应用没有注册 VOIP,那么它不会收到静默通知。
在终止状态下调试 pushkit 通知
- 将调试指针放在委托(delegate)方法上
- 去编辑方案
- 选择运行选项然后启动 -> 等待可执行文件启动
- 从后端发送 push kit payload
- 一旦您在设备上获得有效载荷
- 它会自动调用,调试指针会在委托(delegate)方法中调用。
关于ios - 可靠地传送 iOS VOIP 推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44548432/