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

React Native iOS应用启动时中断第三方音乐播放问题求助

解决React Native iOS首次启动中断后台音乐的问题

核心原因

iOS端React Native应用首次启动时,默认音频会话配置会抢占系统音频焦点,导致后台播放的音乐被中断;而应用后台后再启动音乐时,音频会话已处于非激活状态,不会触发抢占。


解决方案

1. 修改iOS原生音频会话配置

在iOS项目的AppDelegate文件中设置合适的音频会话类别,让应用不独占音频:

Objective-C 版本(AppDelegate.m)
#import <AVFoundation/AVFoundation.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 配置音频会话为Ambient模式,允许与其他音频共存
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    NSError *sessionError = nil;
    [audioSession setCategory:AVAudioSessionCategoryAmbient error:&sessionError];
    if (sessionError) {
        NSLog(@"音频会话配置失败: %@", sessionError.localizedDescription);
    }
    // 启动时不激活音频会话,避免抢占后台音乐
    [audioSession setActive:NO error:&sessionError];

    // 保留原有React Native启动代码
    RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
    RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"YourAppName" initialProperties:nil];
    // ... 其他原有代码
    return YES;
}
Swift 版本(AppDelegate.swift)
import AVFoundation

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    do {
        // 设置音频会话类别为Ambient,允许混合播放
        try AVAudioSession.sharedInstance().setCategory(.ambient)
        // 启动时不激活会话,避免抢占后台音频
        try AVAudioSession.sharedInstance().setActive(false)
    } catch {
        print("音频会话配置失败: \(error)")
    }

    // 保留原有React Native启动代码
    let bridge = RCTBridge(delegate: self, launchOptions: launchOptions)
    let rootView = RCTRootView(bridge: bridge, moduleName: "YourAppName", initialProperties: nil)
    // ... 其他原有代码
    return true
}

2. 检查第三方音频依赖库

如果项目中使用了react-native-sound、expo-av等音频相关库,这些库可能默认设置了独占音频会话,需要调整初始化参数:
比如react-native-sound初始化时开启音频混合:

import Sound from 'react-native-sound';

// 设置Ambient类别并允许与其他音频混合
Sound.setCategory('Ambient', true);

3. 验证效果

  • 先启动Spotify播放音乐并后台运行
  • 重新启动你的React Native应用,确认音乐不会被中断
  • 测试将应用后台后再次播放音乐,确保功能正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:53:31