我的HTML5游戏包含一些在“ html5”模式下使用Howler.js的背景音乐,显然触发了Android media playback notifications的Chrome浏览器。这意味着当用户在任何选项卡中打开我的游戏时会出现一条通知:
游戏是一个很好的公民,在选项卡不清晰时暂停音乐,因此不需要此通知。这甚至使用户感到困惑,因为用户可以暂停和继续游戏的背景音乐,而无需进入游戏。但是我找不到摆脱通知的方法。
我尝试在音乐对象上调用stop()
而不是pause()
或mute()
,但这不会删除通知。
再深入一点,我发现了实验性的MediaSession
API(W3C draft),据推测可以用来控制通知。但是,如果我理解正确,它无法完全禁用它!
我在应用程序开始时尝试了此操作
if (typeof navigator.mediaSession == 'object') {
navigator.mediaSession.playbackState = 'none'
}
但是,这只会设置声明的播放状态(以规范术语而言)。并将其设置为'none'
无效:
实际播放状态是通过以下方式计算的:
- 如果声明的播放状态为“正在播放”,则返回“正在播放”。
- 否则,返回猜测的播放状态。
我无法控制猜测的播放状态;它是由浏览器根据页面上<audio>
个元素的状态得出的。
我是否有可能被忽视,或者这仅仅是当前MediaSession规范中的疏忽?