Notification disappears on Android for HLS tracks
Describe the Bug When I play something the media notification will show up but then it quickly gets removed.
Steps To Reproduce Play audio/video with the following code And make sure to add an HLS track
Code To Reproduce
await TrackPlayer.setupPlayer({
// Important: CarPlay works with IOSCategory.Playback.
iosCategory: IOSCategory.Playback,
// We must set this to the empty array, otherwise the player will
// only play audio in airplane mode. AND it breaks lock screen controls if its not
// the empty array.
// https://react-native-track-player.js.org/docs/api/constants/ios-category-options#allowairplay
iosCategoryOptions: [],
// We must set this to SpokenAudio for lock screen controls to work with
// IOSCategory.Playback.
iosCategoryMode: IOSCategoryMode.SpokenAudio,
})
// We mute the track player because the video player will be the one
// playing the audio. This is to prevent the audio from playing twice.
await TrackPlayer.setVolume(0)
...
await TrackPlayer.updateOptions({
android: {
appKilledPlaybackBehavior:
AppKilledPlaybackBehavior.StopPlaybackAndRemoveNotification,
},
// stoppingAppPausesPlayback is deprecated but we still use it just in
// case it's needed.
stoppingAppPausesPlayback: true,
capabilities: [
Capability.Play,
Capability.Stop,
Capability.Pause,
Capability.JumpBackward,
Capability.JumpForward,
Capability.SeekTo,
],
compactCapabilities: [
Capability.Play,
Capability.Pause,
Capability.JumpForward,
Capability.JumpBackward,
Capability.SeekTo,
Capability.Stop,
],
progressUpdateEventInterval: 1,
})
Replicable on Example App? Can you replicate this bug in the React Native Track Player Example App?
Environment Info:
info Fetching system and libraries information...
System:
OS: macOS 14.4
CPU: (8) arm64 Apple M1
Memory: 100.73 MB / 16.00 GB
Shell:
version: 3.2.2
path: /usr/local/bin/fish
Binaries:
Node:
version: 18.16.0
path: ~/.nvm/versions/node/v18.16.0/bin/node
Yarn:
version: 1.22.22
path: ~/.nvm/versions/node/v18.16.0/bin/yarn
npm:
version: 9.5.1
path: ~/.nvm/versions/node/v18.16.0/bin/npm
Watchman:
version: 2024.03.18.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.12.1
path: /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.4
- iOS 17.4
- macOS 14.4
- tvOS 17.4
- visionOS 1.1
- watchOS 10.4
Android SDK:
API Levels:
- "29"
- "30"
- "33"
- "34"
Build Tools:
- 29.0.2
- 30.0.3
- 33.0.0
- 33.0.1
- 34.0.0
System Images:
- android-29 | Intel x86 Atom
- android-29 | Intel x86 Atom_64
- android-30 | Google APIs Intel x86 Atom
- android-34 | Google APIs ARM 64 v8a
- android-34 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2023.1 AI-231.9392.1.2311.11076708
Xcode:
version: 15.3/15E204a
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.10
path: /usr/bin/javac
Ruby:
version: 2.6.10
path: /usr/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.72.10
wanted: 0.72.10
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: true
newArchEnabled: false
I tried both 4.1.1 and 4.0.1
"react-native-track-player": "4.1.1",
Real device? Android Samsung Tab S6 Lite
What OS are you running? Android 14
How I can Help
Android adb logs:
08-19 14:09:10.012 5019 5019 I NotificationManager: com.subsplash.thechurchapp.ligonier: notify(1, null, Notification(channel=kotlin_audio_player shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0xa color=0x00000000 category=transport actions=1 vis=PUBLIC semFlags=0x0 semPriority=0 semMissedCount=0)) as user
08-19 14:09:10.036 4899 4899 I HoneySpace.NotificationListener: onNotificationPosted com.subsplash.thechurchapp.ligonier: 0|com.subsplash.thechurchapp.ligonier|1|null|10359: 0
08-19 14:09:10.036 4899 4899 I HoneySpace.NotificationListener: invalid notification: com.subsplash.thechurchapp.ligonier UserHandle{0}: canShowBadge is false
08-19 14:09:10.092 4647 4647 D FaceWidgetNotificationControllerWrapper: onMediaDataLoaded, 0|com.subsplash.thechurchapp.ligonier|1|null|10359, 0|com.subsplash.thechurchapp.ligonier|1|null|10359, [ USERID : 0 ] [ INITIALIZED : true ] [ APP : Ligonier ] [ ARTIST : R.C. Sproul ] [ SONG : The Importance of Holiness ] [ ACTIONS : Connecting, ] [ ACTIONSTOSHOWINCOMPACT : [0] ] [ PACKAGENAME : com.subsplash.thechurchapp.ligonier ] [ DEVICE : This tablet ] [ SECMEDIADEVICEDATA : 1 ] [ ACTIVE : true ] [ PLAYBACKLOCATION : 0 ] [ RESUMPTION : false ] [ NOTIFICATIONKEY : 0|com.subsplash.thechurchapp.ligonier|1|null|10359 ] [ HASCHECKFORRESUME : false ] [ ISPLAYING : false ] [ ISCLEARABLE : false ] [ LASTACTIVE : 1970-01-04 07:13:46.778 ] [ INSTANCEID : 441650 ] [ APPUID : 10359 ] [ CUSTOMMEDIADATA : -1 ]
08-19 14:09:10.094 4647 4647 I AODNotificationManager: updateNotification()
08-19 14:09:10.115 4899 4899 I HoneySpace.NotificationListener: onNotificationPosted com.subsplash.thechurchapp.ligonier: 0|com.subsplash.thechurchapp.ligonier|1|null|10359: 0
08-19 14:09:10.115 4899 4899 I HoneySpace.NotificationListener: invalid notification: com.subsplash.thechurchapp.ligonier UserHandle{0}: canShowBadge is false
08-19 14:09:10.183 4647 4647 I AODNotificationManager: updateNotification()
08-19 14:09:10.184 5019 5019 I NotificationManager: com.subsplash.thechurchapp.ligonier: notify(1, null, Notification(channel=kotlin_audio_player shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x8 color=0x00000000 category=transport actions=1 vis=PUBLIC semFlags=0x0 semPriority=0 semMissedCount=0)) as user
08-19 14:09:10.245 5019 5019 I NotificationManager: com.subsplash.thechurchapp.ligonier: notify(1, null, Notification(channel=kotlin_audio_player shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x8 color=0x00000000 category=transport actions=1 vis=PUBLIC semFlags=0x0 semPriority=0 semMissedCount=0)) as user
08-19 14:09:10.324 1792 1792 W Looper : Slow dispatch took 128ms main h=com.android.server.notification.NotificationManagerService$WorkerHandler c=com.android.server.notification.NotificationManagerService$PostNotificationRunnable@d433d7c m=0
08-19 14:09:10.332 4899 4899 I HoneySpace.NotificationListener: onNotificationPosted com.subsplash.thechurchapp.ligonier: 0|com.subsplash.thechurchapp.ligonier|1|null|10359: 0
08-19 14:09:10.332 4899 4899 I HoneySpace.NotificationListener: invalid notification: com.subsplash.thechurchapp.ligonier UserHandle{0}: canShowBadge is false
08-19 14:09:10.368 4899 4899 I HoneySpace.NotificationListener: onNotificationPosted com.subsplash.thechurchapp.ligonier: 0|com.subsplash.thechurchapp.ligonier|1|null|10359: 0
08-19 14:09:10.368 4899 4899 I HoneySpace.NotificationListener: invalid notification: com.subsplash.thechurchapp.ligonier UserHandle{0}: canShowBadge is false
08-19 14:09:10.376 4647 4647 D FaceWidgetNotificationControllerWrapper: onMediaDataLoaded, 0|com.subsplash.thechurchapp.ligonier|1|null|10359, 0|com.subsplash.thechurchapp.ligonier|1|null|10359, [ USERID : 0 ] [ INITIALIZED : true ] [ APP : Ligonier ] [ ARTIST : R.C. Sproul ] [ SONG : The Importance of Holiness ] [ ACTIONS : Play, ] [ ACTIONSTOSHOWINCOMPACT : [0] ] [ PACKAGENAME : com.subsplash.thechurchapp.ligonier ] [ DEVICE : This tablet ] [ SECMEDIADEVICEDATA : 1 ] [ ACTIVE : true ] [ PLAYBACKLOCATION : 0 ] [ RESUMPTION : false ] [ NOTIFICATIONKEY : 0|com.subsplash.thechurchapp.ligonier|1|null|10359 ] [ HASCHECKFORRESUME : false ] [ ISPLAYING : false ] [ ISCLEARABLE : false ] [ LASTACTIVE : 1970-01-04 07:13:47.058 ] [ INSTANCEID : 441650 ] [ APPUID : 10359 ] [ CUSTOMMEDIADATA : -1 ]
08-19 14:09:10.430 4647 4647 I AODNotificationManager: updateNotification()
08-19 14:09:10.450 4647 4647 D FaceWidgetNotificationControllerWrapper: onMediaDataLoaded, 0|com.subsplash.thechurchapp.ligonier|1|null|10359, 0|com.subsplash.thechurchapp.ligonier|1|null|10359, [ USERID : 0 ] [ INITIALIZED : true ] [ APP : Ligonier ] [ ARTIST : R.C. Sproul ] [ SONG : The Importance of Holiness ] [ ACTIONS : Play, ] [ ACTIONSTOSHOWINCOMPACT : [0] ] [ PACKAGENAME : com.subsplash.thechurchapp.ligonier ] [ DEVICE : This tablet ] [ SECMEDIADEVICEDATA : 1 ] [ ACTIVE : true ] [ PLAYBACKLOCATION : 0 ] [ RESUMPTION : false ] [ NOTIFICATIONKEY : 0|com.subsplash.thechurchapp.ligonier|1|null|10359 ] [ HASCHECKFORRESUME : false ] [ ISPLAYING : false ] [ ISCLEARABLE : true ] [ LASTACTIVE : 1970-01-04 07:13:47.166 ] [ INSTANCEID : 441650 ] [ APPUID : 10359 ] [ CUSTOMMEDIADATA : -1 ]
08-19 14:09:10.465 4647 4647 D FaceWidgetNotificationControllerWrapper: onMediaDataLoaded, 0|com.subsplash.thechurchapp.ligonier|1|null|10359, 0|com.subsplash.thechurchapp.ligonier|1|null|10359, [ USERID : 0 ] [ INITIALIZED : true ] [ APP : Ligonier ] [ ARTIST : R.C. Sproul ] [ SONG : The Importance of Holiness ] [ ACTIONS : Play, ] [ ACTIONSTOSHOWINCOMPACT : [0] ] [ PACKAGENAME : com.subsplash.thechurchapp.ligonier ] [ DEVICE : This tablet ] [ SECMEDIADEVICEDATA : 1 ] [ ACTIVE : true ] [ PLAYBACKLOCATION : 0 ] [ RESUMPTION : false ] [ NOTIFICATIONKEY : 0|com.subsplash.thechurchapp.ligonier|1|null|10359 ] [ HASCHECKFORRESUME : false ] [ ISPLAYING : false ] [ ISCLEARABLE : true ] [ LASTACTIVE : 1970-01-04 07:13:47.169 ] [ INSTANCEID : 441650 ] [ APPUID : 10359 ] [ CUSTOMMEDIADATA : -1 ]
08-19 14:09:13.054 5019 5019 D MusicService$setupForegrounding: Notification has been stopped
08-19 14:09:13.055 1792 1792 D EdgeLightingManager: hideForNotification : packageName = com.subsplash.thechurchapp.ligonier
08-19 14:09:13.056 1792 1792 D EdgeLightingPolicyManager:NotificationGroup: remove : sbn : StatusBarNotification(pkg=com.subsplash.thechurchapp.ligonier user=UserHandle{0} id=1 tag=null key=0|com.subsplash.thechurchapp.ligonier|1|null|10359: Notification(channel=kotlin_audio_player shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0x68 color=0x00000000 category=transport actions=1 vis=PUBLIC semFlags=0x0 semPriority=0 semMissedCount=0))
08-19 14:09:13.056 1792 1792 D EdgeLightingPolicyManager.NotificationGroup: group notification count : 0
08-19 14:09:13.056 1792 1792 D EdgeLightingManager: hideForNotification : isOngoing is false
08-19 14:09:13.058 1792 1792 D NotificationService: CancelNotificationRunnable end r = 0|com.subsplash.thechurchapp.ligonier|1|null|10359, reason = 8
08-19 14:09:13.060 1792 1792 D NotificationReminder: removeFromNotificationList record com.subsplash.thechurchapp.ligonier
08-19 14:09:13.065 4899 4899 I HoneySpace.NotificationListener: onNotificationRemoved com.subsplash.thechurchapp.ligonier: 0|com.subsplash.thechurchapp.ligonier|1|null|10359: 0
08-19 14:09:13.075 4647 4647 D FaceWidgetNotificationControllerWrapper: onMediaDataRemoved, 0|com.subsplash.thechurchapp.ligonier|1|null|10359
08-19 14:09:13.100 4647 4647 D FaceWidgetNotificationManager: updateFaceWidgetMusicNotificationPkg() pkgName = null
08-19 14:09:13.100 4647 4647 D FaceWidgetNotificationManager: updateFaceWidgetMusicNotificationKey() return : mFaceWidgetMusicNotificationKey is empty
08-19 14:09:13.102 4647 4647 I AODNotificationManager: updateNotification()
08-19 14:09:13.261 5019 5019 D MusicService$setupForegrounding: Notification has been stopped
08-19 14:09:13.361 5019 5019 D MusicService$setupForegrounding: Notification has been stopped
same issue MusicService$setupForegrounding: Notification has been stopped
Same issue here - the notification no longer shows on Android on v4.1.
EDIT: I did find a solution to my problem - for more context, I recently upgraded RNTP from v2.1 to v4.1.1. After upgrading it, I lost notifications / media controls on Android.
Here's why: I forgot to wait for the setupPlayer promise to resolve. It seems that it wasn't an issue with v2.1, but v4.1.1 just won't have it. So make sure to await TrackPlayer.setupPlayer() before you call any other function.
Hopefully this can help someone else in the future.
This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 7 days.
This issue was closed because it has been stalled for 7 days with no activity.