私の HTML5 ゲームには、「html5」モードで Howler.js を使用するバックグラウンド ミュージックがいくつかあります。これにより、Chrome for Android のメディア再生通知がトリガーされるようです。これは、ユーザーが任意のタブでゲームを開いている間に通知が表示されることを意味します。
ゲームは善良な市民であり、タブがフォーカスされていない間は音楽を一時停止するため、この通知は不要です。ユーザーはゲームに参加しなくてもゲームのバックグラウンド ミュージックを一時停止および再開できるため、混乱を招くことさえあります。しかし、通知を取り除く方法が見つかりません。
stop()
音楽オブジェクトの代わりに、pause()
または音楽オブジェクトで呼び出してみmute()
ましたが、これは通知を削除しません。
もう少し詳しく調べてみると、通知を制御するために使用できると思われる実験的なMediaSession
API ( W3C ドラフト) を発見しました。しかし、私の理解が正しければ、完全に無効にする方法はありません。
アプリケーションの開始時にこれを試しました:
if (typeof navigator.mediaSession == 'object') {
navigator.mediaSession.playbackState = 'none'
}
ただし、これは宣言された再生状態を設定するだけです(仕様用語で)。そして、それをに設定し'none'
ても効果はありません:
実際の再生状態は、次の方法で計算されます。
- 宣言された再生状態が「再生中」の場合は、「再生中」を返します。
- それ以外の場合は、推測された再生状態を返します。
そして、推測された再生状態は、私が制御できないものです。<audio>
ページ上の要素の状態に基づいてブラウザによって導出されます。
私が見落としている可能性はありますか、それとも現在の MediaSession 仕様の単なる見落としですか?