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

React Native WebRTC设置AVAudioSessionCategoryPlayback遇-50错误

解决iOS上WebRTC切换至AVAudioSessionCategoryPlayback时的NSOSStatusErrorDomain Code=-50错误

错误原因解析

Error Code -50属于参数无效错误,问题出在你复用了WebRTC默认配置的mode。WebRTC的webRTCConfiguration默认使用AVAudioSessionModeVoiceChat,这个模式专为**语音通话(依赖麦克风)**设计,和AVAudioSessionCategoryPlayback(纯播放场景)不兼容,导致配置设置失败。

修正方案

1. 调整音频会话配置

放弃复用WebRTC默认配置对象,直接针对纯播放场景设置匹配的category和mode:

@try {
    NSError *error = nil;
    RTCAudioSession* session = [RTCAudioSession sharedInstance];

    [session lockForConfiguration];
    
    // 设置纯播放分类,默认使用扬声器输出
    BOOL categorySuccess = [session setCategory:AVAudioSessionCategoryPlayback 
                                   withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker 
                                         error:&error];
    if (error) {
        NSLog(@"LMT Error setCategory: %@", error);
    } else {
        NSLog(@"LMT Audio session setCategory successfully.");
    }

    // 使用媒体播放对应的模式,替代默认的VoiceChat
    BOOL modeSuccess = [session setMode:AVAudioSessionModeMoviePlayback error:&error];
    if (error) {
        NSLog(@"LMT Error setMode: %@", error);
    } else {
        NSLog(@"LMT Audio session setMode successfully.");
    }

    // 激活音频会话,确保配置生效
    [session activateWithOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];
    if (error) {
        NSLog(@"LMT Error activate session: %@", error);
    }

    [session unlockForConfiguration];
} @catch (NSException *exception) {
    NSLog(@"LMT Error: %@", exception);
}

2. 确保WebRTC仅接收音频流

作为直播观看场景,不需要发送本地音频,初始化WebRTC时不要创建并添加本地音频轨道:

  • 在React Native层,创建PeerConnection后仅添加远程音频轨道,避免调用createLocalAudioTrack相关方法,这样既不会触发麦克风权限请求,也能让WebRTC内部不再强制依赖麦克风相关的音频配置。

3. 额外注意事项

  • 检查项目中是否有其他模块(如独立音频播放器、语音识别工具)修改音频会话,避免配置冲突;
  • 纯播放场景下,可移除Info.plist中的NSMicrophoneUsageDescription声明,避免用户产生权限困惑;
  • 测试低版本iOS(如iOS 12)的兼容性,旧系统对音频会话的配置规则更严格。

内容的提问来源于stack exchange,提问作者Minh Tiến

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:22:22