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

react-native-track-player@3.2.0:关闭应用后播放通知未消失求助

解决react-native-track-player@3.2.0 关闭应用后通知残留问题

针对你遇到的关闭应用后音频停止但播放通知仍存在的问题,可以尝试以下几种解决方案:

1. 监听AppState,在应用退出时主动清理播放器状态

在应用入口(如index.js)中添加AppState监听,当应用进入后台或闲置状态时,主动重置并销毁播放器,强制清除通知:

import { AppState } from 'react-native';

let appStateSubscription;

const trackSetup = async () => {
  await TrackPlayer.setupPlayer({ waitForBuffer: false });
  await TrackPlayer.updateOptions({
    android: {
      appKilledPlaybackBehavior: AppKilledPlaybackBehavior.StopPlaybackAndRemoveNotification,
    },
    notificationCapabilities: [
      Capability.Play,
      Capability.Pause,
      Capability.JumpBackward,
      Capability.JumpForward,
      Capability.SeekTo,
    ],
    capabilities: [
      Capability.Play,
      Capability.Pause,
      Capability.JumpBackward,
      Capability.JumpForward,
      Capability.SeekTo,
    ],
    compactCapabilities: [Capability.Play, Capability.Pause],
  });
  console.log(AppState.currentState, 'Track Player Setup...');

  // 监听应用状态变化
  appStateSubscription = AppState.addEventListener('change', async (nextAppState) => {
    if (nextAppState === 'background' || nextAppState === 'inactive') {
      await TrackPlayer.reset();
      await TrackPlayer.destroy();
    }
  });
};

// 若在组件内初始化,记得在卸载时移除监听
// useEffect(() => {
//   trackSetup();
//   return () => appStateSubscription?.remove();
// }, []);

2. 确认Android原生配置正确性

检查android/app/src/main/AndroidManifest.xml中的服务声明,确保播放器服务能正确响应应用销毁事件:

<service android:name="com.doublesymmetry.trackplayer.service.MusicService" android:foregroundServiceType="mediaPlayback" />
<service android:name="com.doublesymmetry.trackplayer.service.MusicServiceBinder" />
<receiver android:name="com.doublesymmetry.trackplayer.service.MusicBroadcastReceiver" />

3. 初始化时清除旧状态

在播放器初始化前,先清除可能残留的播放器状态,避免旧通知继续显示:

const trackSetup = async () => {
  // 先清除旧状态
  await TrackPlayer.reset().catch(() => {});
  await TrackPlayer.destroy().catch(() => {});
  
  await TrackPlayer.setupPlayer({ waitForBuffer: false });
  // 后续updateOptions代码保持不变
};

4. 版本调整(备选)

若上述方法无效,3.2.0版本可能存在已知bug,可尝试升级到3.x分支的最新稳定版,或降级到3.1.x版本测试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:55:16