首页 技术 正文
技术 2022年11月19日
0 收藏 940 点赞 4,221 浏览 1071 个字

背景介绍:在一个h5页面中,当用户提交表单到后台,后台返回的结果成功的话,开始自动播放背景音乐

   出现的问题:在安卓手机上正常,iOS中没有反应

后来网上一番搜索后了解到时因为iOS不允许自动播放音乐,除非用户做出了交互行为

解决方案:
1.如果是在页面刚加载就需要自动播放音频的话还是比较好办的,可以利用微信提供的api来实现(应该是内部做了一些修改)

 // 通过config接口注入权限验证配置后, 在 ready 中 play 一下 audio
function autoPlayAudio1() {
wx.config({
// 配置信息, 即使不正确也能使用 wx.ready
debug: false,
appId: '',
timestamp: 1,
nonceStr: '',
signature: '',
jsApiList: []
});
wx.ready(function() {
document.getElementById('bgmusic').play();
});
}

参考:在 iOS 微信浏览器中自动播放 HTML5 audio(音乐) 的正确方式

2.需要在某个特定的时机才播放背景音乐

既然iOS做了限制,那只能通过与用户进行交互实现,利用给html添加touchstart事件在回调函数中播放就可以了,需要注意的是:

这里不能同通过jquery的trigger触发,要得到用户真实的交互才会响应,因为只需要触摸一次就可以了,所以可以用one方法注册事件

                        audio.play(); //安卓手机可以直接播放
// 为iOS做兼容,为了保险起见,触摸事件都给他加上
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
var noPlay = true;
$('html').one('touchstart',function(){
if(noPlay) {
audio.play();
noPlay = false;
}
})
$('html').one('touchmove',function(){
if(noPlay) {
audio.play();
noPlay = false;
}
})
$('html').one('touchend',function(){
if(noPlay) {
audio.play();
noPlay = false;
}
})

到这里背景音乐已经可以播放了,但是对于用户体验不够好,如果我不触摸页面的话还是不会播放,如果你有更好的办法,可以加我QQ:32319149 一起讨论啊:)

参考文章:

H5案例分享:解决H5中背景音乐无法自动播放问题
解决iOS下音频无法自动播放

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,105
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,582
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,429
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,836
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,919