iOS 14.5 WKWebView的getUserMedia错误NotReadableError在CallKit接管后



我们使用Ionic 5和电容器3,使用最新的iOS版本,支持getUserMedia的电容器方案。

getUserMedia对我来说是有效的,但一旦我实现了CallKit提供程序,我就会得到:

NotReadableError: The I/O read operation failed

每当我接电话的时候。我们已尝试使用停用AudioSession

audioSession.setActive(false)

在所有这些方法中:

provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession)
provider(_ provider: CXProvider, perform action: CXAnswerCallAction)
pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void)

两者都无济于事。是否有优先级因素,或者我是否需要进行一些中断?

我遇到了同样的问题,找不到解决方案。如果我理解正确的话,getUserMedia和CallKit不能一起工作,可能是因为CallKit为应用程序进程提供了对麦克风的独占访问权限,但WKWebView渲染器在一个单独的进程中运行。如果我先调用CallKit,getUserMedia会返回IO错误。如果我首先调用getUserMedia,那么一旦我调用CallKit,流就会断开连接。

假设这个问题与WKWebView中的WebRTC连接有关,对我来说有效的方法是在连接建立后大约2秒更换媒体流。

MDN提供了如何替换媒体流的示例:https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/replaceTrack

通常,这是用来在正面/背面之间翻转相机的,但在使用带有CallKit的WKWebView时,它会以某种方式启用麦克风。

不过,当应用程序处于后台时,这无助于启用麦克风。。。

相关内容

  • 没有找到相关文章

最新更新