美文网首页
IOS部分机型的H5场景不能自动播放背景音乐

IOS部分机型的H5场景不能自动播放背景音乐

作者: X_JX | 来源:发表于2017-10-19 11:38 被阅读65次

先看下平时使用audio标签插入背景音乐的代码:

<audio id="Jaudio" class="media-audio" src="http://game.163.com/weixin/gfxm3_gc/images/bg.mp3" autoplay preload loop="loop"></audio>

正常来说,上面的写法在安卓和大部分IOS机子的微信是可以播放的(safari这里就忽略讨论),可以扫一扫demo测试下你的手机:


如果上面的demo,你的ios微信可以播放,说明你的是大部分正常的手机。如果不能播放,哈哈,你成为了少部分不能正常播放的幸运者。。。
那代码有办法解决这少部分用户呢?如何解决呢?
答案的关键就是微信的WeixinJSBridgeReady事件。这个是微信自带提供的事件,测试发现,上面说的少部分的机子微信只要做微信ready后执行播放,就可以用代码实现自动播放功能了!具体代码请看下面:
<audio id="Jaudio" class="media-audio" src="http://game.163.com/weixin/gfxm3_gc/images/bg.mp3" preload loop="loop"></audio>
function audioAutoPlay(id){
    var audio = document.getElementById(id);
    audio.play();
    document.addEventListener("WeixinJSBridgeReady", function () {
        audio.play();
    }, false);
}
audioAutoPlay('Jaudio');

刚才如果你第一个demo不能播放的童鞋可以再扫一扫测试下(如果第一个demo已经测试正常的,这个肯定是正常的啦)

是不是听到声音了呢?!!解决方案就是这么简单。

后语
总结下吧,关于音乐自动播放的问题,现在可以分为三种:
1-支持audio的autoplay,大部分安卓机子的自带浏览器和微信,大部分的IOS微信(无需特殊解决)
2-不支持audio的autoplay,部分的IOS微信(本文提供的解决方案)
3-不支持audio的autoplay,部分的安卓机子的自带浏览器(比如小米,开始模仿safari)和全部的ios safari(这种只能做用户触屏时就触发播放了)
那么针对已知的三种情况,关于自动播放背景音乐的问题,我们来总结一下综合解决方案代码吧:


<audio id="Jaudio" class="media-audio" src="http://game.163.com/weixin/gfxm3_gc/images/bg.mp3" preload loop="loop"></audio >
function audioAutoPlay(id){
    var audio = document.getElementById(id),
        play = function(){
        audio.play();
        document.removeEventListener("touchstart",play, false);
    };
    audio.play();
    document.addEventListener("WeixinJSBridgeReady", function () {//微信
       play();
    }, false);
    document.addEventListener(‘YixinJSBridgeReady‘, function() {//易信
              play();
        }, false);
    document.addEventListener("touchstart",play, false);
}
audioAutoPlay('Jaudio');

另一篇:
http://www.cnblogs.com/wmhuang/p/5452259.html

相关文章

网友评论

      本文标题:IOS部分机型的H5场景不能自动播放背景音乐

      本文链接:https://www.haomeiwen.com/subject/cdruuxtx.html