The native module which is accessed inside trackPlayer.ts in the RNTP package seems to be undefined, which causes the error: new NativeEventEmitter() requires a non-null argument.
const { TrackPlayerModule: TrackPlayer } = NativeModules;
const emitter =
Platform.OS !== 'android'
? new NativeEventEmitter(TrackPlayer) //\<-- TrackPlayer is undefined
: DeviceEventEmitter;
I installed the latest version
npm install --save react-native-track-player
then I added playback-service.js
import TrackPlayer, {Capability} from 'react-native-track-player';
module.exports = async function () {
return async () => {
TrackPlayer.addEventListener('remote-play', () => TrackPlayer.play());
TrackPlayer.addEventListener('remote-pause', () => TrackPlayer.pause());
TrackPlayer.addEventListener('remote-next', () => TrackPlayer.skipToNext());
TrackPlayer.addEventListener('remote-previous', () => TrackPlayer.skipToPrevious());
TrackPlayer.addEventListener('playback-buffering', (event) => {
console.log('Buffering...', event.isBuffering);
});
await TrackPlayer.updateOptions([
capabilities: [
Capability.Play,
Capability.Pause,
Capability.SkipToNext,
Capability.SkipToPrevious,
Capability.JumpForward,
Capability.JumpBackward,
Capability.SeekTo
]
});
TrackPlayer.setPlayWhenReady(true);
}
};
registered the playback service and set up the player in App.tsx
useEffect(() =\> {
TrackPlayer.registerPlaybackService(() =\> require('./playback-service.js'));
TrackPlayer.setupPlayer()
}, \[\]);
after that I ran cd ios && pod install
Manually adding
pod 'react-native-track-player', path: '../node_modules/react-native-track-player'
to PODFILE under the ios folder fixed the issue.