iOS 13在后台无法获得VoIP推送通知



我正在使用 CallKit 和 PushKit 在 Swift 中开发软件电话。在iOS 13之前,VoIP通知运行良好。但是在iOS 13更新之后,我的应用程序在后台时没有收到VoIP推送通知。在前台调用didReceiveIncomingPushWith,但在后台不调用。

如何解决此问题?

法典

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
print("(#function)")
let voipPushResgistry = PKPushRegistry(queue: nil)
voipPushResgistry.delegate = self
voipPushResgistry.desiredPushTypes = [PKPushType.voIP]
return true
}
func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenFor type: PKPushType) {
print("(#function) token invalidated")
}
func pushRegistry(_ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, for type: PKPushType) {
let deviceToken = credentials.token.reduce("", {$0 + String(format: "%02X", $1) })
print("(#function) token is: (deviceToken)")
}
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
print("(#function)")
print("It worked..")
if type == .voIP {
print("Uygulama aktif")
}
}

谢谢。

如果您使用 Xcode 11(和 iOS 13 SDK(构建应用程序,如果您未能向 CallKit 报告,PushKit 将不再工作。

在 iOS 13.0 及更高版本中,如果您无法向 CallKit 报告呼叫,则 系统将终止您的应用。反复不报告呼叫可能会 导致系统停止发送更多的 VoIP 推送通知 到你的应用。如果您想在不使用的情况下发起VoIP呼叫 呼叫套件,使用用户通知注册推送通知 框架而不是 PushKit。

https://developer.apple.com/documentation/pushkit/pkpushregistrydelegate/2875784-pushregistry

来自 Github 上@mudassirzulfiqar的答案(感谢他(。卸载并重新安装我的应用程序后,我收到了 voip 推送通知。现在,我将在didReceiveIncomingPushWith中打电话给reportNewIncomingCall.

我已经解决了这个问题,正如Apple在官方论坛中指出的那样,不调用完成将导致在3到5次尝试后禁止您的应用程序。所以我认为当应用程序在 2 到 3 次尝试中被禁止时,它会停止接收 voip。

用例: 我重新安装了我的应用程序并将我的应用程序置于后台, didReceiveIncomingPushWith 被调用。但是因为我没有在正确的时间使用完成关闭,所以下次我可能不会收到 voip。 当应用程序处于前台时,这总是可以正常工作。

使用iOS 13 SDK进行编译时,您无法再通过 CallKit 接收 VoIP 通知,也无法报告新的来电。

检查另一个问题,我已经解释了可用于通知的选项,这些通知不应提醒新的来电。

文档说:

通常,在应用期间保持推送注册表对象运行。

尝试将voipPushResgistry声明为AppDelegate的属性,而不是application(didFinishLaunchingWithOptions)函数的变量。也许它会有所帮助。

相关内容

  • 没有找到相关文章

最新更新