博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios audio不能自动播放
阅读量:5086 次
发布时间:2019-06-13

本文共 1971 字,大约阅读时间需要 6 分钟。

  今天做了一个简单的落地页项目,就是类似于手机微信上经常看到的滑动效果。因为公司要求需要自己开发,所以我就用swiper+swiper.animate开发,开发速度很快,只不过最后音乐哪里出现了一点小bug在ios手机上不能自动播放。本着互联网分享精神我将分享给大家怎么解决这个bug。

思路讲解

  因为右上角的音乐图标需要转动,同时音乐播放。我的设计思路是当音乐加载完成后,音乐播放,图标转动(图标默认是不转动的),要不然有些用户网速慢造成音乐加载不完,图标却先转动了,这样也不符合逻辑。图标的转动和不转动切换时使用切换class实现的。这里我就不做过多的讲解了。

Html源码

js源码

var music = document.getElementById('music');    var mnarrate = document.getElementById('narrate');    mnarrate.oncanplay = function () {  //音乐加载完成执行的函数        music.className = 'start-music';//图标开始旋转        mnarrate.play(); //音乐开始播放    };

   但是上列代码有个弊端,我在浏览器上测试的好好的,安卓也没什么事情。但是到ios上音乐不能播放只能点击下之后才能播放。由于iOS的安全机制问题。不允许audio和video自动播放,即使给play()也是播放过不了。

解决方案1

  使用微信sdk 

  js源码

function autoPlay(id) {        var audio = document.getElementById(id);        $('#narrate').addClass('start-music');        audio.play();        document.addEventListener("WeixinJSBridgeReady", function () {            audio.play();        }, false);        document.addEventListener('YixinJSBridgeReady', function () {            audio.play();        }, false);    }    autoPlay('narrate');

   注意调用以上方法需要配置wn.config如果不配置调用不了,并且以上代码只有在微信访问的时候才生效,其他环境不生效。

   以上方法可能有些复杂,所以还有一个折中的办法。因为是落地页么。所以用户很有坑能滑动或者点击了屏幕,我们可以利用这一点来实现音乐自动播放。

  js代码如下

var music = document.getElementById('music');    var mnarrate = document.getElementById('narrate');    var html = document.getElementsByTagName('html')[0];    var oneClick = true; //指允许点击一次变量。    mnarrate.oncanplay = function () {  //非ios执行函数        music.className = 'start-music';        mnarrate.play();    };    html.addEventListener('touchstart', function () {//ios执行函数。可与上非los同时使用两者不冲突。        if (oneClick === false) {            return        }        oneClick = false;        music.className = 'start-music';        mnarrate.play();    }, false);

  以上代码是给html加一个触碰事件,一旦触碰音频开始播放,这一点ios是允许的。因为项目比较小我用原生写的,如果用jQuery的话有一个one方法,这个方法是指执行一次。

  后记:互联网世界之大,高手如云,本着虚心学习的半杯水精神,如果哪位大神有更好的方案可以给我留言。我会及时回复。

  

 

转载于:https://www.cnblogs.com/waitforyou/p/6840550.html

你可能感兴趣的文章
windows下编辑的shell复制到linux无法执行
查看>>
java 生成可执行jar包
查看>>
欧几里得和扩展欧几里得
查看>>
二、latex简单使用
查看>>
Docker 相关命令汇总
查看>>
spring mvc 下ajax请求返回值问题
查看>>
c++ --> 返回值分析
查看>>
SCADA-brick_Edit属性和方法
查看>>
iPhone LTE band
查看>>
ubuntu linux 修改ip 超扎心。
查看>>
mysql调优
查看>>
利用javascript 添加1万个div 效率优化
查看>>
管理就是要淘汰人渣,激活人员, 培养人手, 重用人才!
查看>>
让赌博成为一种投资行为
查看>>
BZOJ3747 POI2015Kinoman(线段树)
查看>>
FFT学习笔记
查看>>
BZOJ4488 JSOI2015最大公约数
查看>>
Server push(服务器推送技术)
查看>>
KVO原理解析
查看>>
python小整数与str数据池,编码关系
查看>>