egret iOS微信浏览器默认不播放背景音乐
最近在做一个小项目,用的是egret+微信浏览器环境,在安卓上运行没有任何问题,但是到了万恶的苹果上不行了,立马有问题了,BGM不能自动播放,查了一下发现是IOS系统为了节省用户的流量,禁止了audio标签的自动播放,哈哈哈,特么的,对用户真是太贴心了(不得不吐槽一下,都已经用上苹果了,还会在乎那几个流量费?)。本不想改了,但是这时候万恶的产品经理说,不行,这个必须要能自动播放。没办法,人在屋檐下不得不低头,百度一通,找到一个,一试还真行。在这里贴出来记录一下。
1.首先要在index.html这个文件里添加一个函数用于引导播放:
function playsound(sound, loop) {
if (sound == null) {
console.log('sound err')
return;
}
var times = loop ? 0 : 1;
if (typeof WeixinJSBridge != 'undefined') {
WeixinJSBridge.invoke('getNetworkType', {
}, function (e) {
return sound.play(0, times).volume = 0;
});
} else {
return sound.play(0, times).volume = 0;
}
}
2.第二步在自己的声音管理单例里边添加一个方法,用于播放静音引导,使用的就是第一步的引导函数:
public playNullSound() {
let nullSound: egret.Sound = RES.getRes("yindao_mp3");
window["playsound"](nullSound, false);
}
3.第三步在需要播放音乐地方先用上面的函数播放一段静音引导,然后再设置一个setTimeOut延迟播放正确的音乐,具体如下:
SoundManager.getInstance().playNullSound();
egret.setTimeout(()=>{
SoundManager.getInstance().playBgm('BGM_mp3');
}, this, 200);
注意事项:
1.需要用到的声音资源需要预加载,否则无法通过RES.getRes()获取。
2.playBgm具体就不写了,官方文档都有,很简单。
参考:
https://www.cnblogs.com/mieQ/p/7614061.html
来源:oschina
链接:https://my.oschina.net/u/4378647/blog/4679258