gpt4 book ai didi

apple-push-notifications - 在 iOS 13 设备中无法在后台/挂起状态下接收 VoIP 消息

转载 作者:行者123 更新时间:2023-12-02 03:05:21 26 4
gpt4 key购买 nike

我正在开发一个聊天应用程序。为了增强消息传递体验,我使用 VoIP 推送在后台/终止状态下向应用程序传递消息。我猜这就是 Whatsapp 的做法。它在 iOS 版本 13.0 之前的设备上运行良好。然而,在 iOS 13 设备上,推送仅在前台状态进行。在后台状态下,我无法在 didReceiveIncomingPushWith 委托(delegate)方法中获得回调。我浏览了一些在线博客,其中写道,苹果现在将其限制为仅用于通话目的。人们提出的另一件事是,如果应用程序通过 XCode 10 分发,即使用 iOS 12 SDK 编译,那么它也应该可以工作。然而,无论我使用什么 XCode,它都不适用于我的情况。我的目标是即使应用程序被终止/在后台(就像 Whatsapp 一样)也能向用户传递消息。对此的任何想法/指导都将受到高度赞赏。谢谢

最佳答案

我遇到了与您完全相同的问题;对我来说问题是 iOS 13 上有一个新的 Pushkit 委托(delegate)方法:

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void

它与原型(prototype)末尾的完成处理程序的前一个(现已弃用)不同。文档规定您必须调用完成处理程序(即使无效)来告诉 CallKit 调用已被处理。如果不遵守规定,您的应用将禁止在后台或强制退出状态下接收 Pushkit 通知。当应用程序位于前台时它仍然有效。

我解决了向我的应用程序添加以下代码的问题:

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
NSLog("Got new callback incoming notification")
self.pushRegistry(registry, didReceiveIncomingPushWith: payload, for: type)
DispatchQueue.main.async {
completion()
}
}

附注要清除禁止状态(在我的测试中出现 2-3 次合规性失败后触发),您需要从设备中完全删除该应用程序并重新开始。

关于apple-push-notifications - 在 iOS 13 设备中无法在后台/挂起状态下接收 VoIP 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59150450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com