我们已经能够使用 CallKit 建立 VoIP 呼叫。但是,在此已建立的 VoIP 呼叫上的保持和恢复操作会导致单向语音路径问题。按住并恢复后,我可以听到远端。远端无法听到我的声音。
- 我已经拿了Wireshark的痕迹,确认恢复后,只有单向音频。音频没有从我的设备发送到远端。
- 由于 Wireshark 已经显示了问题,我检查了 WebRTC 代码中的媒体会话错误。我在 startSend 或 startPlayout 中看不到任何错误(发送和接收的音频单元处理)
- 我通过 CallKit 集成代码重新检查以确认正确的序列
保持操作
- 按下 App UI 上的 HOLD 按钮或长按 CallKit UI 上的 MUTE 按钮。
- 应用程序向 CallKit 请求 CXSetHeldCallAction 事务,其中 onHold 为YES。
- 应用接收提供者委托回调 performSetHeldCallAction。
- 应用程序将呼叫置于保持状态,然后执行 performSetHeldCallAction。
- 应用接收提供者委托回调 didDeactivateAudioSession。
恢复操作
- 按 App UI 上的 RESUME 按钮或 CallKit UI 上的 HELD 按钮。
- 应用程序向 CallKit 请求 CXSetHeldCallAction 事务,其中 onHold 为NO。
- 应用接收提供者委托回调 performSetHeldCallAction。
- 应用程序配置音频会话(AVAudioSessionCategoryPlayAndRecord、AVAudioSessionModeVoiceChat、preferredSampleRate:44100),然后执行 performSetHeldCallAction 但记住要暂停的呼叫。
- 应用接收提供者委托回调 didActivateAudioSession。使用此应用程序可以暂停通话(恢复通话)。该调用是在上述步骤中存储的调用。
我们已经使用错误报告(没有更新)提出了 Apple Ticket,并且正在寻求提出 Apple 技术支持事件 (Apple TSI)。
希望能提供一些有价值的意见。