Skip to content

Media Session API

The mediaSession namespace provides listeners for remote control events from system media controls, Bluetooth devices, and the lock screen.

interface MediaSessionApi {
setup(): Promise<void>;
addListener<E extends MediaSessionEventName>(
eventName: E,
listener: MediaSessionListener<E>
): Promise<BindingListenerHandle>;
removeAllListeners(): Promise<void>;
}

Initializes the native plugin. MUST be called before registering listeners.

await mediaSession.setup();

Returns: Promise<void>


Registers a listener for remote control events.

const handle = await mediaSession.addListener('remote-play', () => {
console.log('User pressed play on remote control');
});
// Remove listener when done
await handle.remove();

Parameters:

ParameterTypeRequiredDescription
eventNameMediaSessionEventNameYesRemote event to subscribe to.
listenerMediaSessionListener<E>YesCallback with typed payload.

Returns: Promise<BindingListenerHandle>

EventPayloadDescription
remote-play{}User triggered play from remote control.
remote-pause{}User triggered pause from remote control.
remote-next{}User triggered next track.
remote-previous{}User triggered previous track.
remote-seek{ position: number }User triggered seek. Only emitted if runtime supports seek.

Removes all registered media session listeners.

await mediaSession.removeAllListeners();

Returns: Promise<void>


interface MediaSessionEventPayloadMap {
'remote-play': {};
'remote-pause': {};
'remote-next': {};
'remote-previous': {};
'remote-seek': { position: number };
}
type MediaSessionListener<E extends MediaSessionEventName> = (
payload: MediaSessionEventPayloadMap[E]
) => void;