You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS锁屏接听WebRTC通话时麦克风无法发送语音问题

iOS WebRTC + CallKit 锁屏通话音频发送问题解决记录

问题描述

我在iOS端基于WebRTC和CallKit实现通话功能时,碰到了一个棘手的场景:应用处于前台时通话全程正常,但锁屏状态下接听通话后,只能接收对方语音,自身语音无法发送出去。不过只要用户解锁进入应用,这个问题就自动恢复了。

我已经确认所有后台配置与权限都正确设置,Info.plist里的UIBackgroundModes配置如下:

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
    <string>fetch</string>
    <string>remote-notification</string>
    <string>voip</string>
</array>

排查尝试

我先后尝试用RTCAudioSession和AVAudioSession重新配置音频会话,调整过音频分类、激活模式等参数,但问题依旧没有改善。

最终解决方案

最后发现问题出在媒体流的添加方式上:

原本我是直接将RTCMediaStream整体加入RTCPeerConnection,改成单独添加RTCMediaStreamTracks之后,锁屏状态下的音频发送就完全正常了!

推测直接添加整个媒体流时,后台状态下WebRTC没有正确初始化音频轨道的发送通道,而单独添加轨道的方式,能让WebRTC更精准地处理后台环境下的音频传输逻辑。

内容的提问来源于stack exchange,提问作者Elene Akhvlediani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:35:51