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