В моей HTML5-игре есть фоновая музыка, которая использует Howler.js в режиме "html5", что, по-видимому, вызывает Chrome для Android уведомлений о воспроизведении мультимедиа .Это означает, что уведомление появляется, когда пользователь открывает мою игру на любой вкладке:
Игра является хорошим гражданином и приостанавливает музыку, пока вкладкане находится в фокусе, поэтому нет необходимости в этом уведомлении.Это даже активно сбивает с толку, потому что пользователь может приостановить и возобновить фоновую музыку игры, не находясь в игре.Но я не могу найти способ избавиться от уведомления.
Я пытался вызвать stop()
вместо pause()
или mute()
для музыкального объекта, но это не удаляет уведомление.
Глядя немного глубже, я обнаружил экспериментальный MediaSession
API ( W3C draft ), который предположительно можно использовать для управления уведомлением.Но, если я правильно понимаю, он не предлагает способа отключить его напрямую!
Я пробовал это в начале моего приложения:
if (typeof navigator.mediaSession == 'object') {
navigator.mediaSession.playbackState = 'none'
}
Однако, это только устанавливает объявленное состояние воспроизведения (в терминологии спецификации).И установка на 'none'
не имеет никакого эффекта:
Фактическое состояние воспроизведения вычисляется следующим образом:
- Если заявленное состояние воспроизведения «воспроизводится», возвращает «воспроизведение».
- В противном случае возвращает предполагаемое состояние воспроизведения .
И угаданное состояние воспроизведения - это то, что я не могу контролировать;он получен браузером на основе состояния <audio>
элементов на странице.
Есть ли вероятность, что я пропускаю, или это просто упущение в текущей спецификации MediaSession?