IOS微信摇一摇声音无法播放的解决办法
在IOS中第一次调用play方法播放音频会被阻止,必须得等用户有交互动作,比如touchstart,click后才能正常调用,所以可以在摇一摇之前提醒用户点击一下开始游戏的按钮或者给用户一个弹窗,用户点击的时候播放一个超级短的无声音文件,之后替换src,这样再调用play方法就可以了。
代码如下如:
Document $('button').one('touchstart',function(){ varaudio=document.getElementById("audio"); audio.play(); audio.setAttribute('src','https://daoket.github.io/img/shake.mp3'); audio.load(); $(this).text('游戏进行中'); }) /** *移动端摇一摇 *@paramsdevicemotion提供设备加速度信息 */ window.addEventListener('devicemotion',devicemotionHandler,false); varx, y, z, last_x, last_y, last_z, last_time=0, SHAKE_SPEED=4000; functiondevicemotionHandler(evet){ varacc=event.accelerationIncludingGravity, curTime=newDate().getTime(), diffTime=curTime-last_time; if(diffTime>100){ last_time=curTime; x=acc.x; y=acc.y; z=acc.z; varspeed=Math.abs(x+y+z-last_x-last_y-last_z)/diffTime*10000; if(speed>SHAKE_SPEED){ document.getElementById("audio").play() } last_x=x; last_y=y; last_z=z; } }