微信播放音乐 为什么在wx.ready后执行就可以正常播放了

红叶舞秋山
  • 440

微信IOS中自动播放声音 是被禁止的。除非用户主动触发。

但是用了微信jsdk后 就可以在 wx.ready()里 控制播放了。

//第一步:首先加载一个微信JS-SDK
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

//第2步:写一些配置
<script>
function autoPlayAudio() {
        wx.config({
            // 配置信息, 即使不正确也能使用 wx.ready
            debug: false,
            appId: '',
            timestamp: 1,
            nonceStr: '',
            signature: '',
            jsApiList: []
        });
        wx.ready(function() {
            var globalAudio=document.getElementById("audio标签id");
            globalAudio.play();
        });
};

// 解决ios音乐不自动播放的问题
autoPlayAudio();

问题是微信做了什么?为什么在wx.ready后就可以自动播放了。其内幕是啥?。

ready的源码:

ready =function (a){0!=G.state?a():(F._completes.push(a),!w&&E.debug&&a())}
回复
阅读 3.9k
1 个回答
✓ 已被采纳

光看JS代码是看不出来的。所有JS代码都需要浏览器解释执行。微信内嵌的浏览器是经过微信改造的,屏蔽了很多功能。例如这里的play函数,同样的代码放到Safari浏览器里就能够自由调用,但在微信浏览器里就不能调用,明显是被微信禁止了的,但是你得到微信授权之后,它就允许你调用了,这是微信控制网站开发者的一个手段,理由总是以安全为借口的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏