IOS的移动端audio自动播放(多种场景)

前言:为什么单说ios而不说安卓呢,因为ios的安全机制,把audio的canplay事件禁止了,导致了ios设备上自动播放功能不能简单的实现,需要用户点击一次才能播放。而安卓却没有这些问题,这也算是展现了两个系统的对于开放与安全的理解吧。
ios的audio标签在用户点击了一次之后才能播放,假如你的项目需要刚进页面就播放或者需要异步请求音频链接,那你肯定对这个ios的安全机制恨之入骨了。。。

这里贴一下安卓的自动播放:

document.getElementById('musicAudio').setAttribute('src', 'your.mp3')
document.getElementById('musicAudio').play()

注意事项:
- 1: html中的audio最好提前写好一个有效的mp3链接,防止某些ios版本会把audio标签当成无效标签给干掉
- 2: 对audio进行src赋值的时候,用document.getElementById(‘musicAudio’).setAttribute(‘src’, ‘your.mp3’)
-
-

ios场景1:进入页面时候进行自动播放

在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js

备注:支持使用 AMD/CMD 标准模块加载方法加载 AMD加载方法:

  • 安装: npm install weixin-js-sdk –save
  • 使用: var wx = require(‘weixin-js-sdk’)
wx.config({
  debug: false,
   appId: data.appid,
   timestamp: data.timestamp,
   nonceStr: data.noncestr,
   signature: data.signature,
   jsApiList: []
 })
 wx.ready(function() {
   // 在微信的ready中进行播放 不管成功配置与否 都会执行ready
   document.getElementById('musicAudio').setAttribute('src', 'your.mp3')
   document.getElementById('musicAudio').play()
 })

ios场景2:进入页面后要异步请求音频文件,请求到后要进行播放

  • 1: 先播放一次audio 然后暂停一次
  • 2: 进行ajax异步请求
  • 3:回调中对audio进行赋值
  • 4:play

document.getElementById('musicAudio').play()
document.getElementById('musicAudio').pause()

this.$axios.post('/api/getmp3', params).then(({ data }) => {
    document.getElementById('musicAudio').setAttribute('src', 'your.mp3')
    document.getElementById('musicAudio').play()
})
// 以上代码最好是放在一个点击事件里 当用户点击了之后开始执行,请求过程中应该有个loading让用户感知
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值