React Native(Expo非托管工作流)iOS端麦克风输入自动路由至输出设备的问题求助
React Native(Expo非托管工作流)iOS端麦克风输入自动路由至输出设备的问题求助
大家好,我目前正在用Expo非托管工作流开发一款React Native实时语音通话应用,用户之间的音频传输功能是正常的,但在真实iOS设备上碰到了一个挺棘手的问题:麦克风捕捉到的我的声音,会自动被路由到输出设备——没戴耳机时会从手机外放出来,戴耳机的话就直接从耳机里听到自己的声音,这显然不是语音通话该有的正常表现。
我现在是用react-native-webrtc来捕获设备媒体流的,核心代码如下:
const stream = await mediaDevices.getUserMedia({ audio: true, video: false, });
我之前查过相关内容,看到有人说可以通过自定义原生模块,把音频会话设置为playAndRecord来解决这个问题。于是我按照Expo的官方文档步骤创建了自定义原生模块,在里面添加了这些iOS原生代码:
let session = AVAudioSession.sharedInstance() try session.setCategory(.playAndRecord, mode: .voiceChat, options: [.allowBluetooth]) try session.setActive(true)
但很遗憾,不管我怎么测试,麦克风的输入还是会自动路由到输出系统,这个问题完全没有改善。我想向大家求助:
- 有没有具体的方案可以修复这个问题?
- 这种麦克风输入自动回传到输出的情况,是互联网语音通话的默认行为吗?
- 还有什么其他可能的原因或者调试方向可以推荐给我?
真的非常感谢大家的帮助和建议!
内容来源于stack exchange




