React Native Track Player - Missing Native Module on IOS

300 Views Asked by At

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

1

There are 1 best solutions below

1
On

Manually adding pod 'react-native-track-player', path: '../node_modules/react-native-track-player' to PODFILE under the ios folder fixed the issue.