プログレッシブ Web アプリを Trusted Web Activity としてラップする Android アプリを作成しています。( Google のサンプル プロジェクトのガイドラインに従っています。)
ユーザーがアプリでオーディオを再生すると、デバイスにメディア通知が表示されます。この通知の内容をカスタマイズするために、Web Media Session API を使用しています。
通常の Web ブラウザーで PWA を実行している場合、通知が表示されたら、それを押すと、ユーザーは関連するブラウザー タブに戻ります。(電話機がロックされている場合、ユーザーはロックを解除するように求められます)。
メディア通知が TWA からトリガーされた場合、それを押しても何も起こりません。(再生/一時停止などの他の機能は期待どおりに機能します。)
Media Session APIの範囲はかなり限定されています。MediaSession アクション タイプには、アプリにフォーカスするアクションは含まれません。
navigator.mediaSession.setActionHandler('pause', () => {
audioElement.pause();
navigator.mediaSession.playbackState = 'paused';
});
navigator.mediaSession.setActionHandler('play', () => {
audioElement.play();
navigator.mediaSession.playbackState = 'playing';
});
navigator.mediaSession.metadata = new MediaMetadata({
title: 'App',
artist: 'Name',
artwork: [
{ src: '/android-chrome-192x192.png?v=47rE43RRzB', sizes: '192x192', type: 'image/png' },
{ src: '/android-chrome-512x512.png?v=47rE43RRzB', sizes: '512x512', type: 'image/png' },
],
});
メディア通知が TWA からトリガーされた場合、Chrome などの Web ブラウザーからトリガーされた場合と同じ機能を期待します。
これには、再生/一時停止コントロール以外の場所で通知が押されたときに、ユーザーを TWA に戻す (またはユーザーにデバイスのロックを解除するように求める) ことが含まれます。
この側面を除いて、他のすべてが機能します。