使用Quickblox和CallKit在iOS 13中出现视频通话问题

问题描述

功能:我已经在应用程序中实现了QuickBlox视频通话

问题:如果应用程序处于后台,收件人不会收到来电通知

结果:视频通话在iOS 12之前可以正常工作,但在iOS 13上只有问题。

我检查了许多链接解决问题:

  1. https://docs.quickblox.com/docs/ios-quick-start?_ga=2.195456812.1462473955.1597308006-918905754.1585299886
  2. https://docs.quickblox.com/docs/ios-video-calling-advanced
  3. https://github.com/QuickBlox/quickblox-ios-sdk/tree/master/sample-videochat-webrtc-swift
  4. https://github.com/twilio/voice-quickstart-ios/issues/275

此外,我已经在QuickBlox的GitHub存储库中发布了问题:

  1. https://github.com/QuickBlox/quickblox-ios-sdk/issues/1199
  2. https://github.com/QuickBlox/q-municate-ios/issues/345

问题的崩溃日志:

"didReceiveIncomingPushWith called"
"[HomeVC] timeIntervalSinceStartCall > QBRTCConfig.answerTimeInterval"
2020-06-23 22:51:12.114253+0530 MyApp[2555:1050373] Apps receving VoIP pushes must post an incoming call (via CallKit or IncomingCallNotifications) in the same run loop as pushRegistry:didReceiveIncomingPushWithPayload:forType:[withCompletionHandler:] without delay.
2020-06-23 22:51:12.114529+0530 MyApp[2555:1050373] *** Assertion failure in -[PKPushRegistry _terminateAppIfThereAreUnhandledVoIPPushes],/buildroot/Library/Caches/com.apple.xbs/Sources/PushKit/PushKit-36/PKPushRegistry.m:343
2020-06-23 22:51:12.127602+0530 MyApp[2555:1050373] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException',reason: 'Killing app because it never posted an incoming call to the system after receiving a PushKit VoIP push callback.'
*** First throw call stack:
(0x1b7c3498c 0x1b795d0a4 0x1b7b36d1c 0x1b7f6c8f4 0x1cb735a5c 0x10b82ac04 0x10b839888 0x1cb7349cc 0x10b829828 0x10b82ac04 0x10b838c64 0x1b7bb23c4 0x1b7bad3b8 0x1b7bac8bc 0x1c1a18328 0x1bbc426d4 0x10520ac58 0x1b7a37460)
libc++abi.dylib: terminating with uncaught exception of type NSException
Message from debugger: Terminated due to signal 9

解决方法

该应用似乎正确接收了voip通知,但未使用CallKit registerCall函数处理它,因为它是用docs和crashlog编写的,必须立即在同一运行循环中发生,您可以理解为相同的线程,因此请确保已通过这种方式实现。