Как избавиться от уведомления о "воспроизведении мультимедиа", отображаемого 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 = ''." ссылка

Другие вопросы по тегам