Memulai
-
Instal plugin
Terminal window npm i @capgo/capacitor-media-sessionTerminal window pnpm add @capgo/capacitor-media-sessionTerminal window yarn add @capgo/capacitor-media-sessionTerminal window bun add @capgo/capacitor-media-session -
Sinkronkan platform
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
ℹ️ Media Session API tersedia di Android (browser berbasis Chrome, WebView) dan banyak browser desktop. Pada platform yang tidak didukung, pemanggilan akan terselesaikan tanpa efek, jadi sesuaikan UI Anda dengan tepat.
Publikasikan metadata
Section titled “Publikasikan metadata”import { MediaSession } from '@capgo/capacitor-media-session';
await MediaSession.setMetadata({ title: 'Weekly Tech Podcast', artist: 'Capgo Studio', album: 'Season 2', artwork: [ { src: 'https://cdn.example.com/covers/s02e05-512.png', sizes: '512x512', type: 'image/.png' }, ],});Perbarui status pemutaran
Section titled “Perbarui status pemutaran”await MediaSession.setPlaybackState({ playbackState: 'playing' });
// Jeda nanti jika diperlukanawait MediaSession.setPlaybackState({ playbackState: 'paused' });Tangani aksi media
Section titled “Tangani aksi media”const pauseHandler = async () => { player.pause(); await MediaSession.setPlaybackState({ playbackState: 'paused' });};
await MediaSession.setActionHandler({ action: 'pause' }, pauseHandler);await MediaSession.setActionHandler({ action: 'play' }, async () => { await player.play(); await MediaSession.setPlaybackState({ playbackState: 'playing' });});
// Hapus handler saat Anda membuang pemutarawait MediaSession.setActionHandler({ action: 'pause' }, null);Jaga posisi tetap sinkron
Section titled “Jaga posisi tetap sinkron”const updatePosition = async () => { await MediaSession.setPositionState({ duration: player.duration, position: player.currentTime, playbackRate: player.playbackRate, });};
player.ontimeupdate = updatePosition;player.onratechange = updatePosition;Rekomendasi
Section titled “Rekomendasi”- Perbarui metadata saat trek berubah agar notifikasi dan smart speaker tetap terbaru.
- Batasi pembaruan posisi (misalnya setiap 250 ms) untuk menghindari spam pada lapisan asli.
- Selalu hapus action handler saat membersihkan instance pemutar untuk mencegah kebocoran yang tidak disengaja.