iOS6/7使用网络音频API阻止声音进入背景

iOS6/7 stop sound going to background using web audio API

本文关键字:声音 背景 API 音频 网络 iOS6      更新时间:2024-06-05

当你在iPhone或iPad中进入后台并持续播放声音时,有不同的解决方案,其中大多数是针对HMTL5音频标签的,但如果你使用Web audio API,则这些解决方案并不相关,因为没有像"timeupdate"这样的事件,这当然是一个不同的概念。页面可见性API仅当您更改选项卡时才在iOS7中工作,但如果您转到后台则不工作,在iOS6中根本不工作。

如果您在iOS6或iOS7中进入后台,有人知道使用Web Audio API停止/静音声音的方法吗?

要检测safari何时进入后台,您可以使用名为pageshowpagehide的窗口事件(但您已经发现了这一点)。

document.addEventListener('pageshow',function(){
    // Do something here
}, false);
document.addEventListener('pagehide',function(){
    // Do something here
}, false);

您还可以使用PageVisibility API(自iOS7起提供)来检查选项卡是否已更改。

document.addEventListener('visibilitychange', function(){
    if (document.hidden) {
        // Tab out of focus
    }
    else {
        // Tab on focus
    }
},false);

请注意,自iOS7以来,此代码应适用于safari,但有些浏览器需要前缀。

自动解决80%。这些是当你进入后台并返回Safari时触发的独特事件,在两个iOS上都进行了测试。

 window.addEventListener("pageshow", function(evt){ 
    //fooBarCode
 }, false);
 window.addEventListener("pagehide", function(evt){ 
   //fooBarCode 
}, false);

只有当你转到后台时,这才有效,但当你更改选项卡时,这不是一个有效的解决方案,有什么想法吗?