react-native-track-player
在 Android 上运行react-native 应用程序时,通知中心(MIUI 12 上的小米设备中的通知中心和控制中心)变得迟钝。在我看来,玩家试图在通知中心打开某些东西但失败并一遍又一遍地重试。我在设置中检查了我的应用信息,我看到了以下内容:
我认为管理 Android 中的远程控制选项存在问题。我不知道项目的 Android 端发生了什么,因为我是一名 react-native 开发人员,但它似乎试图将音乐的元信息和控制选项作为通知发送,这会导致严重的性能问题。
我在各种安卓设备上测试时遇到了这个问题:
- 运行 Android 10 的小米 a2 lite
- 运行Android 10的小米红米note8 Pro
- 运行 Android 10 的三星 A31
这就是我初始化播放器的方式:
function NewPlayer() {
const events = [
Event.PlaybackTrackChanged,
Event.PlaybackQueueEnded,
Event.PlaybackError,
Event.RemotePause,
Event.RemoteNext,
Event.RemotePrevious,
Event.RemotePlay,
Event.RemotePause,
Event.RemoteStop,
Event.RemoteSeek,
Event.RemoteDuck,
];
useTrackPlayerEvents(events, event => {
switch (event.type) {
case Event.RemoteDuck:
pauseSong();
break;
case Event.PlaybackError:
console.warn(
'An error occured while playing the current track.',
event,
);
break;
case Event.RemoteNext:
playNextSong();
break;
case Event.RemotePrevious:
playPrevSong();
break;
case Event.RemotePlay:
playSong();
break;
case Event.RemotePause:
pauseSong();
break;
case Event.RemoteStop:
pauseSong();
break;
case Event.RemoteSeek:
TrackPlayer.seekTo(event.position);
break;
default:
}
});
useEffect(() => {
// Initialize
TrackPlayer.setupPlayer({
iosCategory: IOSCategory.Playback,
// iosCategoryOptions:
iosCategoryMode: IOSCategoryMode.Default,
});
TrackPlayer.updateOptions({
stopWithApp: true,
capabilities: [
Capability.Play,
Capability.Pause,
Capability.SkipToNext,
Capability.SkipToPrevious,
Capability.Stop,
Capability.SeekTo,
],
compactCapabilities: [Capability.Play, Capability.Pause],
});
}, []);
return null;
}
我正在使用react-navigation
v5,我的播放器在项目的根目录中实例化:
<Provider store={store}>
<PersistGate persistor={persistor}>
<SafeAreaProvider>
<StatusBar barStyle="light-content" />
<RootStack authContext={authContext} />
<NewPlayer />
</SafeAreaProvider>
</PersistGate>
</Provider>
提示:我也在GitHub 上报告了这个问题:
我该如何解决这个问题?