在我的应用程序中,它是VoIP呼叫的现有功能。一些用户向我报告没有接收到VoIP呼叫。在我检查之后,发现报告的用户版本是ios 13或更高版本。
但我的一个朋友有iPhone 6 plus(ios 12.5(,因为我接到了VoIP电话。
ios 13或更高版本仍有任何设置。
这是我的代码:
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
let provider1 = CXProvider(configuration: defaultConfig())
provider1.setDelegate(self, queue: nil)
let update = CXCallUpdate()
update.supportsDTMF = true
update.supportsHolding = true
update.supportsGrouping = false
update.supportsUngrouping = false
update.hasVideo = false
// self.provider = provider1
let bgTaskID = UIApplication.shared.beginBackgroundTask(expirationHandler: nil)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()) {
UIApplication.shared.endBackgroundTask(bgTaskID)
}
uuidneww = UUID()
update.remoteHandle = CXHandle(type: .generic, value: "Calling")
provider1.reportNewIncomingCall(with:uuidneww , update: update, completion: { error in })
}
iOS 15:
如果在前台/后台有推送,但在终止状态下没有推送,并且您触发CallKit API,请确保:
PKPushRegistry
对象是在application(didFinishLaunchingWithOptions:)
中创建的。这一步非常重要,因为您可以在某个视图控制器中创建它,当然它不会在后台调用delegate
已设置- 调用
pushRegistry:didReceiveIncomingPushWithPayload:forType:withCompletionHandler:
委托方法。一定要使用带有完成块的方法,这样它仍然有效,将来可能不会