[expo-audio] iOS: Expose MPNowPlayingInfoPropertyIsLiveStream for live/radio streams
inhalt
## Summary
expo-audio
does not expose MPNowPlayingInfoPropertyIsLiveStream
, which means live radio and streaming apps cannot show the native iOS
LIVE
indicator on the lock screen and Control Center. Instead, iOS renders a broken scrubber with
no duration, which is incorrect UX for live streams.
## Environment
- Expo SDK: 55
- expo-audio: ~55.0.8
- Platform: iOS
- Use case: Live radio stream (no duration / infinite stream)
## Expected behavior
When playing a live stream, the lock screen and Control Center should show:
- A LIVEbadge instead of a progress scrubber
- No elapsed time or duration display
- This is the standard iOS behavior for any app streaming live audio (Apple
Podcasts, Spotify, RadioApp, etc.)
## Actual behavior
- Lock screen shows a scrubber with no duration (stuck at 0 or broken)
- No LIVE indicator is shown
- There is no API in expo-audioto signal to iOS that the stream is live
## Requested API
Add an
isLiveStream
boolean field to updateLockScreenMetadata
(or equivalent):```ts
AudioPlayer.updateLockScreenMetadata({
title: "Station Name",
artist: "Live Radio",
isLiveStream: true, // new field
});
On the native iOS side this should map to:
```swift
nowPlayingInfo[MPNowPlayingInfoPropertyIsLiveStream] = true
// Also clear duration and elapsed time for correctness:
nowPlayingInfo.removeValue(forKey: MPMediaItemPropertyPlaybackDuration)
nowPlayingInfo.removeValue(forKey: MPNowPlayingInfoPropertyElapsedPlaybackTime)
MPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo
## Workaround
There is currently no workaround within
expo-audio
. Achieving this requires either a native module or dropping down to
react-native-track-player
which supports
isLiveStream
out of the box.## References
- Apple docs: https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfopropertyislivestream
- react-native-track-playerimplementation: https://rntp.dev/docs/api/objects/track#islivestream
- Similar request in expo-av: expo/expo#12606