egret iOS微信浏览器默认不播放背景音乐

在iOS系统中,微信浏览器默认禁止audio标签的自动播放,为了解决这个问题,可以通过调用微信JSBridge来实现静音播放引导,再延迟播放实际音乐。具体步骤包括在index.html中添加引导播放函数,声音管理单例中添加播放静音引导的方法,并在需要播放音乐的地方先播放静音引导,然后延迟播放目标音乐。确保声音资源已预加载。
摘要由CSDN通过智能技术生成

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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值