Как избавиться от уведомления о «воспроизведении мультимедиа», отображаемого Chrome на Android? - PullRequest
1 голос
/ 17 апреля 2019

В моей HTML5-игре есть фоновая музыка, которая использует Howler.js в режиме "html5", что, по-видимому, вызывает Chrome для Android уведомлений о воспроизведении мультимедиа .Это означает, что уведомление появляется, когда пользователь открывает мою игру на любой вкладке:

image

Игра является хорошим гражданином и приостанавливает музыку, пока вкладкане находится в фокусе, поэтому нет необходимости в этом уведомлении.Это даже активно сбивает с толку, потому что пользователь может приостановить и возобновить фоновую музыку игры, не находясь в игре.Но я не могу найти способ избавиться от уведомления.

Я пытался вызвать stop() вместо pause() или mute() для музыкального объекта, но это не удаляет уведомление.

Глядя немного глубже, я обнаружил экспериментальный MediaSession API ( W3C draft ), который предположительно можно использовать для управления уведомлением.Но, если я правильно понимаю, он не предлагает способа отключить его напрямую!

Я пробовал это в начале моего приложения:

if (typeof navigator.mediaSession == 'object') {
  navigator.mediaSession.playbackState = 'none'
}

Однако, это только устанавливает объявленное состояние воспроизведения (в терминологии спецификации).И установка на 'none' не имеет никакого эффекта:

Фактическое состояние воспроизведения вычисляется следующим образом:

  • Если заявленное состояние воспроизведения «воспроизводится», возвращает «воспроизведение».
  • В противном случае возвращает предполагаемое состояние воспроизведения .

И угаданное состояние воспроизведения - это то, что я не могу контролировать;он получен браузером на основе состояния <audio> элементов на странице.

Есть ли вероятность, что я пропускаю, или это просто упущение в текущей спецификации MediaSession?

...