2014-10-31 62 views
3

我一直在試圖讓WebAudio在Safari工作iOS8上(我已成功得到它在Windows和Android設備上工作)玩。無法獲得WebAudio通過iOS的8

這是我的理解,你不能自動在iOS上播放webaudio通過Safari瀏覽器,而是必須通過觸發用戶操作第一WebAudio呼叫(例如按下按鈕)。然後,一旦這個第一次用戶驅動的行動完成,WebAudio將工作.........可以。

所以我有一個按鈕可以設置(使用JQM)是這樣的:

<a href="#" onclick="PlayDing('Silent');" data-icon="info" data-role="button" data-mini="false" data-theme="b" data-corners="false">Enable Audio</a><hr /> 

「PlayDing」時,它看起來像這樣的功能:

function PlayDing(DingType) { 
var sound = new Audio('../../UI/Audio/' + DingType + '.mp3').play(); 
} 

的想法是,點擊通過「啓用音頻」按鈕,這觸發用戶交互播放一個MP3文件(這只是1秒的沉默),然後後續的音頻事件將正常工作。

任何想法,爲什麼這不適用於iOS8/Safari?

編輯:

如果我改變JQM按鈕發揮出應有丁聲,它工作正常,我的iPad播放鐘聲。

編輯2:

這是沒有任何關係從我的iPad的音樂庫中播放音頻文件。這是關於播放屬於該網站一部分的文件/資源​​。

+0

可能重複的是它可以播放音頻從本地ios庫通過html5?](http://stackoverflow.com/questions/19803399/is-it-possible-to-p lay-audio-from-a-local-ios-library-via-html5) – bodi0 2014-10-31 12:43:14

+0

嗯。不,這不是重複的。這個問題是圍繞着查看他們的本地媒體文件。我正在播放一個MP3,這是一個網站的資源。另外,我編輯了這個問題以包含更多信息。 – 2014-10-31 13:00:06

回答

2

「這是我的理解,你不能在iOS上通過Safari自動播放網絡音頻,而是必須通過用戶操作(例如按下按鈕)觸發第一個WebAudio呼叫,然後一旦這第一個用戶驅動操作完成後,WebAudio將工作......... Apparantly。「

你是完全正確的關於遊戲的處理。爲避免在用戶設備上播放不需要的聲音或不必要的聲音下載,可能需要使用每月的數據 - 聲音播放必須與用戶的觸摸/點擊在相同的堆棧中調用。

有很多種,你必須處理,以確保所有用戶能夠可靠地播放聲音的東西。有一件事是它必須在你玩之前下載。爲了達到這個目標,我們使用一種稱爲預加載的技術

你還必須考慮到,並非所有用戶都支持相同的音頻格式帳戶。

你的HTML和Javascript的一個例子可能如下:

的Javascript:

function PlayDing(DingType) { 
    //Get a reference to the audio element 
    var sound = document.getElementById(DingType); 
    //Play it 
    sound.play(); 
} 

HTML:

<body> 
    <!--Declare the sounds in as many formats as possible and let the user's browser handling what sound to play & caching --> 
    <audio id="Silent" preload="auto"> 
      <source src="'../../UI/Audio/silent.ogg" type="audio/ogg"> 
      <source src="'../../UI/Audio/silent.wav" type="audio/wav"> 
      <source src="'../../UI/Audio/silent.aac" type="audio/mpeg"> 
    </audio> 

    <a href="#" onclick="PlayDing('Silent');" data-icon="info" data-role="button" data-mini="false" data-theme="b" data-corners="false">Enable Audio</a> 
    <hr /> 
</body> 
的[