react-native-track-player でトラックを次のトラックに変更する際に問題があります。
音楽がバックグラウンドで再生されているときにトラックを変更する必要があり、コントロールのある iOS ロック画面にいます。
react-native-track-player のドキュメント ( http://react-native-track-player.js.org/documentation/ ) に従って、実装を行いました。
私はservice.jsファイルを持っています:
import TrackPlayer, {Event} from 'react-native-track-player';
import {tracks} from './src/components/audioPlayer/tracks';
module.exports = async function () {
TrackPlayer.addEventListener('remote-play' as Event, () =>
TrackPlayer.play(),
);
TrackPlayer.addEventListener('remote-pause' as Event, () =>
TrackPlayer.pause(),
);
TrackPlayer.addEventListener('remote-stop' as Event, () =>
TrackPlayer.destroy(),
);
TrackPlayer.addEventListener(Event.RemotePrevious, async (e: any) => {
const currentTrackIndex = await TrackPlayer.getCurrentTrack();
if (currentTrackIndex > 0) {
try {
await TrackPlayer.skipToPrevious();
console.log('remote previous succeeded');
} catch {
console.log('remote previous error');
console.log(e);
}
}
});
TrackPlayer.addEventListener(Event.RemoteNext, async (e: any) => {
const currentTrackIndex = await TrackPlayer.getCurrentTrack();
if (currentTrackIndex < tracks.length - 1) {
try {
await TrackPlayer.skipToNext();
console.log('remote next succeeded');
} catch {
console.log('remote next error');
console.log(e);
}
}
});
TrackPlayer.addEventListener('remote-seek' as Event, async (position) =>
TrackPlayer.seekTo(position.position),
);
コンポーネントファイルで機能構成を作成しました。
トラック プレーヤーはアプリで正常に動作し、一時停止、再生、skipToNext、skipToPrevious を実行できます。
私の問題は次のとおりです。プレーヤーは、ロックされた画面でバックグラウンド再生を行っているときにも正常に動作し、再生、一時停止を行いますが、ここで skipToNext または skipToPrevious を実行すると、一時停止状態になります (ロックされた画面から開始することはできません) -しかし、デバイスを開くと、トラックが変更されていることがわかります)。
xCode からのログは次のとおりです。
2021-10-06 12:10:24.148543+0200 [52842:2962646] [javascript] 'New event: ', { state: 'playing', type: 'playback-state' }
2021-10-06 12:10:24.148677+0200 [52842:2962646] [javascript] state play
2021-10-06 12:10:27.719001+0200 [52842:2962646] [javascript] 'New event: ', { type: 'remote-next' }
2021-10-06 12:10:27.719153+0200 [52842:2962646] [javascript] Event remote next state
Skipping to next track
2021-10-06 12:10:27.930207+0200 [52842:2962646] [javascript] remote next succeeded
2021-10-06 12:10:27.950990+0200 [52842:2962646] [javascript] 'New event: ', { track: 1,
nextTrack: 2,
position: 3.49197814,
type: 'playback-track-changed' }
2021-10-06 12:10:27.951244+0200 [52842:2962646] [javascript] Event track changed
2021-10-06 12:10:28.019813+0200 [52842:2962646] [javascript] CURRENT TRACK useeffect:
2021-10-06 12:10:28.030528+0200 [52842:2962646] [javascript] { id: 2,
url: 'https://www.soundhelix.com/examples/mp3/SoundHelix-Song-3.mp3',
title: 'Kalkbass',
artist: 'Bar Horse',
album: '',
duration: 344 }
2021-10-06 12:10:28.428465+0200 [52842:2962646] [javascript] 'New event: ', { state: 'paused', type: 'playback-state' }
2021-10-06 12:10:28.428566+0200 [52842:2962646] [javascript] state paused
Starting/Resuming playback
質問: 何が問題になるのでしょうか? ロックされた画面の iOS からバックグラウンドでトラックを変更するための適切な実装がありますか? どんな助けでも大歓迎です。
バージョン: "react": "17.0.2", "react-native": "0.65.1", "react-native-track-player": "^2.1.1", xCode: 13.0 iOS (実機テスト済み) :15.0