ios audio不可以正常播放

ios中audio不能直接经过audio.play()播放,须要用户在click事件或者touch事件中执行audio.play()才能播放。vue

ajax回调中audio.play()音乐不能正常播放。

用户点击按钮,等服务器返回数据后再播放相应的成功或失败的音乐,测试在ios中不能正常播放。猜想ios中的audio不能再ajax回调函数中play()ios

下面记录一下ios中ajax回调中播放音乐的问题解决过程

  • 解决方案一 --下降音量ajax

在用户点击时间后将audio的音量设置为0,等success后将音量设置为1; volume能够控制audio的音量大小,取值范围为 0~1chrome

audio.volume=number

发如今chrome的手机模式能够将音乐静音,ios中居然不能控制音量,好吧这个被ios屏蔽了。放弃了。。。服务器

  • 解决方案二 --播放后当即暂停函数

用户点击按钮后当即播放音乐,等ajax返回数据后再继续播放。测试可以正常播放。部分代码以下:测试

// 用户click事件
if (this.isIOS()) {          // ios单独处理 安卓不须要
  this.$refs.audio.play()
  this.$refs.audio.pause()
}

// ajax成功后的事件
  this.$refs.audio.pause()
  this.$refs.audio.currentTime = 0
  this.$refs.audio.play()

因为是vue项目,因此代码中有this.$refs小伙伴们别介意;this

总结

  1. 在ios中,若是须要播放音乐或者视频,须要用户手动触发事件在调用.play()才能播放(autoplay或者直接.play()是不能直接触发的);code

  2. 若是须要在ajax回调函数中播放音乐,须要在用户触发事件后播放音乐当即暂停而后才能在回调函数中.play(),否则ios中是播放不成功的。视频

相关文章
相关标签/搜索