audio标签的自动播放(ios)

Posted 陈蒙的技术空间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了audio标签的自动播放(ios)相关的知识,希望对你有一定的参考价值。

0.应用场景

 前端移动端开发,经常有播放音乐的需求。比如我有公司做过类似支付宝的年度账单,功能是用户在查看年度账单的过程中播放轻音乐。

1.audio标签播放mp3

(一)常用属性和API介绍

1.controls属性

有了它,就会显示控制条。

图1 chrome默认audio样式

图2 ie默认audio样式

 图3 firefox默认audio样式

图4  ios的微信端(iphone6,系统版本11.4,微信使用内置Safari):

2.autoplay属性

  autoplay指的是自动播放,chrome61、ie11 ,ie edge、firefox 60已测试,可自动播放。ios不能自动播放,那么先点一下播放按钮才行。这是什么原因呢,ios为了用户流量着想,限制了audio标签的自动播放,那么safari没有用户的交互就播放会被拦截。

PS:6月29日补充。杯具了:(,我的电脑自动更新到chrome67了,不能自动播放了。参考“Chrome禁止audio自动播放”搜索词。

 autoplay的默认值是false。

(二)实现ios自动播放

我们刚才说了,除了ios,其他端都能够使用autoplay属性实现自动播放。那么ios自动播放应该如何来做呢?

首先,我们要知道音频流(audio stream)在ios上的工作方式。那么就是说只有有了用户交互后才能下载,接下来才能播放。

如下图:

参考Overcoming iOS HTML5 audio limitations

图1:Workflow to load audio in mobile Safari

第二,用Js来完成效果,ios的微信端可以监听XXX事件,safari(和ios微信端)监听touchstart事件,然后手动play。

ios微信端:

<script>
         var audio = document.querySelector(\'#audio\');
         audio.play();
         //既然是微信的ready事件,只能在微信端使用
         document.addEventListener("WeixinJSBridgeReady", function () {
             audio.play();
         }, false);
</script>

成功播放!

ios的safari浏览器和微信端:

<audio id="audio" controls src="assets/music.mp3" autoplay>
    <source src="assets/music.mp3" type="audio/mpeg">
</audio>

<script>
    var audio = document.querySelector(\'#audio\');
    //safari和微信
    document.addEventListener("touchstart", function () {
       audio.play();
    }, false);
</script>

成功播放!

长时间的写博客,有些累了,完整Demo待更新!!!

 

 

   

以上是关于audio标签的自动播放(ios)的主要内容,如果未能解决你的问题,请参考以下文章

关于html5 audio 标签在ios系统上不能正常自动播放的解决办法

关于html5 audio 标签在ios系统上不能正常自动播放的解决办法

深刻求解答:ios使用audio标签不能播放网络音频 求解决方案!!!

如何在 iOS 上自动播放 HTML5 <video> 和 <audio> 标签?

ios设置音乐audio自动播放

苹果手机audio标签微信实现自动播放