在 iOS 中听不到 WebRTC 音频通话语音 无法使用移动数据,但可以使用 WIFI 连接

WebRTC Audio call voice not hearing in iOS not working with Mobile data but works with WIFI connection

这种情况每次音频通话都会失败 如果发送方使用wifi网络,接收方使用移动数据3G/4G网络,那么接收方可以听到发送方的声音,而接收方的声音在发送方则听不到。

peer connection 连接成功,发送方和接收方在双方。

“peerConnection 新连接状态:正在检查” “peerConnection 新连接状态:已连接”

此外,我们正在使用 STUN 和 TURN 服务器,例如“stun:stun.l.google.com:19302”和 config.iceServers = [RTCIceServer(urlStrings: ["turn:numb.viagenie.ca:3478" ], 用户名: "username@xyz.com", 凭证: "@password")]

请在下面找到音频远程流代码:

private func configureAudioSession() {
    self.rtcAudioSession.lockForConfiguration()
    do {
        try self.rtcAudioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
        try self.rtcAudioSession.setMode(AVAudioSessionModeVoiceChat)
    } catch {
        print("Error setting configuration: \(error.localizedDescription)")
    }
    self.rtcAudioSession.unlockForConfiguration()
}

private func createMediaSenders() {
    let streamId = "XYZ"
    let audioTrack = self.createAudioTrack()
    self.peerConnection.add(audioTrack, streamIds: [streamId])
}

我正在尝试正确地遵循三个集成步骤并在我的应用程序中正常工作。

  1. 配置 WebRTC 音频会话以使用手动音频并禁用音频:

    RTCAudioSession.sharedInstance().useManualAudio = true RTCAudioSession.sharedInstance().isAudioEnabled = false

  2. 在你的 CXProvider 委托的 provider(CXProvider, didActivate: AVAudioSession) 方法上:

  • 呼叫RTCAudioSession.sharedInstance().audioSessionDidActivate
  • 来自 CXProvider 的 AVAudioSession 启用音频:RTCAudioSession.sharedInstance().isAudioEnabled = true
  1. 在您的 CXProvider 委托的提供者 (CXProvider, didDeactivate: AVAudioSession) 上使用来自 CXProvider
  2. 的 AVAudioSession 调用 RTCAudioSession.sharedInstance().audioSessionDidDeactivate