skip to Main Content

I got TrackPlayer.destroy is not a function. (In 'TrackPlayer.destroy()', 'TrackPlayer.destroy' is undefined error when I called TrackPlayer destroy method in my expo react native app

this is my code
the service.ts

import TrackPlayer, {Event} from 'react-native-track-player';

module.exports = async function(): Promise<void> {
// This service needs to be registered for the module to work
// but it will be used later in the "Receiving Events" section
TrackPlayer.addEventListener('remote-play' as Event, () => TrackPlayer.play());

TrackPlayer.addEventListener('remote-pause' as Event, () => TrackPlayer.pause());

TrackPlayer.addEventListener('remote-stop' as Event, () => TrackPlayer.destroy());
}

and I imported it in my index.js

import TrackPlayer from 'react-native-track-player'
...
...
TrackPlayer.registerPlaybackService(() => require('./service'));

and this is the react-native-track-player configuration in my App.tsx

import TrackPlayer, {Capability} from 'react-native-track-player'
...

const initializeTrackPlayer = React.useCallback(async () => {
await TrackPlayer.setupPlayer({
  waitForBuffer: true,
})

await TrackPlayer.updateOptions({
  stoppingAppPausesPlayback: true,
  capabilities: [
      Capability.Play,
      Capability.Pause,
      Capability.SkipToNext,
      Capability.SkipToPrevious,
      Capability.Stop,
      Capability.SeekTo,
  ],
  compactCapabilities: [
    Capability.Play, 
    Capability.Pause,
    Capability.SkipToNext,
    Capability.SkipToPrevious,
    Capability.SeekTo,
    Capability.Stop,
  ],
  icon: require('./assets/icon.png')
})
}, [])
React.useLayoutEffect(() => {
  initializeTrackPlayer()
}, [])

so I am listening for remote events like from the notification bar on Android, it works fine if I click on play/pause, but when I click on stop icon which will trigger the TrackPlayer.destroy() method but it gives the above error TrackPlayer.destroy() is not a function

It also gives the same error if I call the TrackPlayer.destroy() method within the app

please what could be the cause of the error?

thanks in advance

2

Answers


  1. Chosen as BEST ANSWER

    I have found out what went wrong, the destroy function was removed from react-native-track-player few minutes before I installed it and that's like 15 - 20 hours now

    this is the link to the PR https://github.com/doublesymmetry/react-native-track-player/pull/1645/files#diff-67806635aecad4c3ddf7d36728b6510a7904dcab82efb6b775bff19f77d6b7b1

    and more details on it https://github.com/doublesymmetry/react-native-track-player/releases/tag/v3.0

    from the PR
    On Android, the audio service can't be manually stopped by the app anymore. The OS itself decides when to stop it.


  2. What’s your react-native-track-player version? There’s some bugs on versions 2.2.0-rc3 and 2.2.0-rc4, maybe it’s your case. If it is, you have to upgrade to the newest version.

    Check this issue.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search