gpt4 book ai didi

ios - CallKit: 使用 WebRTC 时没有声音

转载 作者:可可西里 更新时间:2023-11-01 05:39:53 26 4
gpt4 key购买 nike

我们的项目使用 WebRTC 进行 VOIP 调用,在访问 CallKit 框架之前它工作正常。但是当我尝试访问CallKit框架时,出现了双方都听不到对方讲话的情况。当我删除 CallKit 时,一切恢复正常。

CallKit的接听按钮与项目中原有的接听按钮功能相同。

令我惊讶的是,没有必要听不到任何声音。有时一切正常,但有时会出现问题。嗯,出问题的概率比较大。

我找到了下面的流程图,我怀疑问题出在函数调用的顺序上。但是不知道WebRTC是怎么对应图中的功能的。
enter image description here

另外我很好奇socket不稳定会不会导致CallKit框架工作不正常

请原谅我英文不好,但是这个问题困扰了我好几天了,我也不知道到底是哪里出了问题,是不是哪里和CallKit框架冲突了?

希望您能帮帮我,非常感谢!

最佳答案

以正确的方式连接 webrtc 和 callkit 需要完成几个步骤:首先,您必须使用 RTCAudioTrack 并添加 RTCAudioSession 来处理音频。直接添加到 RTCPeerConnection 中的旧遗留 RTCAudioSession 可以工作,但它不是首选的方法。第二件事是使用 manualAudio。当应用程序启动时,您应该更改 RTCAudioSession 上的 useManualAudio 标志:

RTCAudioSession.sharedSession().useManualAudio = true

这让您可以推迟音频直到 CallKit 通知 Audio Session 已激活,因此在 ProviderDelegate 中您应该实现以下方法:

(void)provider:(CXProvider *)provider didActivateAudioSession:(AVAudioSession *)audioSession
RTCAudioSession.sharedSession().didActivecated(audioSession)
RTCAudioSession.sharedSession().isAudioEnabled = true

第二个音频委托(delegate)方法不要忘记添加:

(void)provider:(CXProvider *)provider didDeactivateAudioSession:(AVAudioSession *)audioSession
RTCAudioSession.sharedSession().didDeactivecated(audioSession)
RTCAudioSession.sharedSession().isAudioEnabled = false

关于ios - CallKit: 使用 WebRTC 时没有声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48070163/

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