feat: adds iosCategory update functionality#2259
Conversation
|
|
||
| updateCategory(config: options) | ||
|
|
||
| configureAudioSession() |
There was a problem hiding this comment.
@dcvz Can I call this here safely? I realize that reinitialization is something that should be avoided based on this code inside setupPlayer:
reject("player_already_initialized", "The player has already been initialized via setupPlayer.", nil)
There was a problem hiding this comment.
I think you can update this safely since the phone switches nicely between the two speakers when updating the iosCategory and iosCategoryMode properties.
|
When I was testing this on my app for some reason switching the |
Are you perhaps calling update with an empty capabilities array? Docs say that we update new capabilities, but I think we've found that not all of them do, and omitting them is like setting them as empty. |
|
@dcvz Hey David thanks for the reply, I'm not calling update with an empty capabilities array. See my code below. You will notice the additional 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,
// We patched this so this works
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
iosCategoryMode,
})
|
|
Possibly related to #2285 |
|
This PR 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 PR was closed because it has been stalled for 7 days with no activity. |
Why
It allows you to switch modes at run time. For example, if you have an app that plays both audio and video you may need to update the
iosCategoryModeat runtimeFor some reason we found that to get CarPlay to broadcast the audio from track player using audio it needs IOSCategoryMode.SpokenAudio and for video it needs IOSCategoryMode.VideoRecording.
How
I moved some of the logic into an
updateCategoryfunction so it can be reused and theiosCategoryModecan be updated as well as other ios properties (see docs I've updated)