1. 程式人生 > >移動端Web音樂無法自動播放的問題

移動端Web音樂無法自動播放的問題

關於移動端Web音樂自動播放的問題,可以分為三種:

  1. 支援audio的autoplay,大部分安卓機子的自帶瀏覽器和微信,大部分的IOS微信(無需特殊解決)
  2. 不支援audio的autoplay,部分的IOS微信 (解決ios下的微信開啟的頁面背景音樂無法自動播放)
  3. 不支援audio的autoplay,部分的安卓機子的自帶瀏覽器(比如小米)和ios safari(只能做使用者觸屏時觸發播放,本文介紹)

 

原因

  1. 微信的js api是建立在微信內建瀏覽器的私有物件WeixinJSBridge上,在微信中開啟頁面的話會初始化這個物件,當這個物件準備好的時候,會丟擲WeixinJSBridgeReady這個事件,我們在這個事件的回撥中可以播放音樂。
  2. 以前的IOS是支援音訊自動播放的,但是在IOS4.2.1版本之後,蘋果不支援自動播放,為了使用者著想,禁止了autoplay和JS “onload” 載入播放,在此我們監聽使用者觸屏時觸發。更多資料見官方文件Safari Developer Library

 

解決辦法:

<audio src="bg.mp3" id="CW" autoplay preload></audio>

jQuery(document).ready(function($) {
    audioAutoPlay('CW');
});

function audioAutoPlay(id){

    var audio = document.getElementById(id),
        play = function(){
            audio.play();
            document.removeEventListener("touchstart",play, false);
        };

    audio.play();

    //相容微信
    document.addEventListener("WeixinJSBridgeReady", function () {
        play();
    }, false);

    //相容易信
    document.addEventListener('YixinJSBridgeReady', function() {
        play();
    }, false);

    document.addEventListener("touchstart",play, false);
}

原博