iOS系統(tǒng)和微信中不支持audio自動(dòng)播放問(wèn)題的解決方法
前言
最近在做一個(gè)移動(dòng)端項(xiàng)目,需要為H5配一段背景音樂(lè)且要自動(dòng)播放,按照以往的方法將自動(dòng)播放代碼加入進(jìn)去就可以了,可以卻發(fā)生了點(diǎn)小插曲(捂臉),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
移動(dòng)端音頻播放代碼
css
.pause { position: absolute; z-index: 10000; bottom: 10px; right: 10px;}
.pause a { width:30px; height:30px; background:url(http://mat1.gtimg.com/zj/maxbao/reai/imgs/units-icons.png) 0 0 no-repeat; display:block; background-size: 90px auto;}
.pause a.on { -webkit-animation:reverseRotataZ 1.2s linear infinite}
.pause a.off { }
.pause span{ color: #fff; font-size: 16px; position:absolute; left:-40px; top:5px; text-shadow:1px 1px 1px #000; letter-spacing:2px; -webkit-transition:all .2s linear; opacity:0; -webkit-transform:translateX(-20px) }
.pause span.z-show { opacity:1; -webkit-transform:translateX(0px)}
.coffee-steam-box { -webkit-transform:translate(-40px,-40px)}
@-webkit-keyframes reverseRotataZ {
0% {
-webkit-transform:rotateZ(0deg)
}
100% {
-webkit-transform:rotateZ(-360deg)
}
}
.audio{position: absolute; z-index:10; visibility: hidden; opacity: 0; left: 0px; top:0px; width: 100px ; height: 30px;}
html
<div class="pause"> <a class="on" href="#" rel="external nofollow" > </a> <span>開(kāi)啟</span> </div> <div class="audio"> <audio src="http://mat1.gtimg.com/ln/images/2016zt/12Dec/dlsdbm/music.mp3" controls="controls" preload="auto" autoplay="autoplay" id="audio" loop></audio> </div>
javascript
//播放器
(function($) {
$(document).ready(function() {
var musicControl = function(obj){
var classname = $.trim(obj.attr('class'));
//alert(classname);
if (classname == 'on')
{
document.getElementById('audio').pause();
obj.removeClass('on').addClass('off');
obj.siblings('span').text('關(guān)閉');
$('.pause span').addClass('z-show');
$('.music-icon').removeClass('active');
setTimeout(function(){
$('.pause span').removeClass('z-show');
},500);
} else if (classname == 'off')
{
document.getElementById('audio').play();
obj.removeClass('off').addClass('on');
obj.siblings('span').text('開(kāi)啟');
$('.music-icon').addClass('active');
$('.pause span').addClass('z-show');
setTimeout(function(){
$('.pause span').removeClass('z-show');
},500);
};
return false;
}
$('.pause a').click(function ()
{
musicControl($(this));
});
var audio = document.getElementById('audio');
audio.play();
$(document).one("touchstart",
function() {
audio.play()
})
});
})(jQuery);
問(wèn)題解決
加進(jìn)去后用微信(iOS系統(tǒng))瀏覽頁(yè)面發(fā)現(xiàn)居然沒(méi)有自動(dòng)播放,點(diǎn)擊暫停后再次點(diǎn)擊播放正常,這就說(shuō)明播放功能沒(méi)有問(wèn)題,將頁(yè)面用iOS自帶瀏覽器Safari打開(kāi)后也不能自動(dòng)播放,往年都是用這段代碼,屢試不爽難道突然就不好使了?隨即用android手機(jī)打開(kāi)頁(yè)面,居然可以自動(dòng)播放,那就證明代碼本身是沒(méi)有問(wèn)題的,隨后查了相關(guān)文獻(xiàn),是因?yàn)閕OS Safari 限制不允許 audio autoplay, 必須用戶(hù)主動(dòng)交互(例如 click)后才能播放 audio, 因此我們通過(guò)一個(gè)用戶(hù)交互事件來(lái)主動(dòng)play一下audio應(yīng)該就可以解決問(wèn)題了,代碼如下:
document.getElementById('idName').play();
這個(gè)時(shí)候Safari可以自動(dòng)播放了但是發(fā)現(xiàn)微信里面居然還是不行,難道是微信做了什么處理?將代碼修改如下:
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
//一般情況下,這樣就可以自動(dòng)播放了,但是一些奇葩iPhone機(jī)不可以
document.getElementById('idName').play();
//微信必須加入Weixin JSAPI的WeixinJSBridgeReady才能生效
document.addEventListener("WeixinJSBridgeReady", function () {
document.getElementById('idName').play();
document.getElementById('video').play(); //視頻自動(dòng)播放
}, false);
</script>
至此已經(jīng)完美解決了自動(dòng)播放的問(wèn)題,其實(shí)對(duì)于不允許音頻視頻自動(dòng)播放的問(wèn)題來(lái)說(shuō)不一定就是壞事,因?yàn)槟阆氘吘勾蠹伊髁磕敲促F,一個(gè)音頻視頻動(dòng)輒就幾MB甚至十幾MB、幾十MB,自動(dòng)播放流量瞬間就出去了,哭都來(lái)不及,所以如果不是必要情況還是不要自動(dòng)播放的好,聽(tīng)不聽(tīng)看不看交給用戶(hù)來(lái)選擇。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
iOS實(shí)現(xiàn)應(yīng)用內(nèi)切換本地化語(yǔ)言的方法實(shí)例
網(wǎng)絡(luò)上關(guān)于iOS國(guó)際化的文章很多,但基本上都是基于跟隨系統(tǒng)語(yǔ)言的國(guó)際化,而這篇文章主要給大家介紹了關(guān)于利用iOS實(shí)現(xiàn)應(yīng)用內(nèi)切換本地化語(yǔ)言的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考。2017-12-12
IOS開(kāi)發(fā)使用KeychainItemWrapper 持久存儲(chǔ)用戶(hù)名和密碼
這篇文章主要介紹了IOS開(kāi)發(fā)使用KeychainItemWrapper 持久存儲(chǔ)用戶(hù)名和密碼的相關(guān)資料,需要的朋友可以參考下2015-11-11
iOS、Mac OS X系統(tǒng)中編程實(shí)現(xiàn)漢字轉(zhuǎn)拼音的方法(超級(jí)簡(jiǎn)單)
這篇文章主要介紹了iOS、Mac OS X系統(tǒng)中編程實(shí)現(xiàn)漢字轉(zhuǎn)拼音的方法(超級(jí)簡(jiǎn)單),本文講解的方法不僅支持中文,還支持日文、韓文等,需要的朋友可以參考下2015-04-04
iOS App開(kāi)發(fā)中UITextField組件的常用屬性小結(jié)
這篇文章主要介紹了iOS App開(kāi)發(fā)中UITextField組件的常用屬性小結(jié),文中還介紹了UITextField隱藏鍵盤(pán)及為內(nèi)容增加校驗(yàn)的兩個(gè)使用技巧,需要的朋友可以參考下2016-04-04
iOS開(kāi)發(fā)中對(duì)文件目錄的訪(fǎng)問(wèn)及管理的基本方法小結(jié)
這篇文章主要介紹了iOS開(kāi)發(fā)中對(duì)文件目錄的訪(fǎng)問(wèn)及管理的基本方法小結(jié),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-10-10
配置iOS?16?屏幕旋轉(zhuǎn)適配實(shí)例詳解
這篇文章主要為大家介紹了配置iOS?16?屏幕旋轉(zhuǎn)適配實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
iOS開(kāi)發(fā)狀態(tài)欄及設(shè)置功能全面詳解
這篇文章主要為大家介紹了iOS開(kāi)發(fā)狀態(tài)欄及設(shè)置功能全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

