0

我正在構建一個網絡應用程序,其中包括在新訂單進入應用程序時播放聲音。在桌面上,這一切工作正常。有沒有一種方法可以在Web應用程序中以編程方式播放音頻?

但是,在iOS上,音頻根本不播放。經過一些investigation我發現iOS在播放音頻方面有限制。

  • 只有在用戶交互
  • 只有當頁面處於活動狀態,在前面
  • 僅在手機屏幕上
  • 有沒有辦法讓不關閉屏幕,讓你的聲音會在第一首歌后停止。

有沒有辦法讓用戶允許音頻以編程方式播放?

+0

可能不是,故意。這是爲了儘量減少隨機網站的煩惱。您可以查看網絡通知API,但即使在那裏音頻通知也不可能是IIRC。 – deceze

+0

謝謝。是啊,通知API有一個健全的屬性,但它不支持任何瀏覽器... –

回答

0

是的,這是真的!用戶請求前沒有音頻緩衝區。 使用彈出式窗口或任何適合眼睛的動畫來吸引用戶點擊。 一個人你初次玩,並在同一時間下一個代碼行暫停你將啓動緩衝後,你可以播放音頻編程。

在我的記憶

... Android和iOS不具有相同的行爲,它是關於音頻,我們可以用這一招(點擊或觸摸)啓動緩衝區的最大數量。你需要測試它。

如果您想讓相同音頻在同一時刻播放更多次: 最好使用相同來源創建更多音頻html標記。我是js的粉絲,但這次最好有html格式的html音頻標籤。

var EXE_JUST_ONE_TIME = false; 

    document.addEventListener("touchstart" , function(e) { 

    if (EXE_JUST_ONE_TIME == false){ 

    EXE_JUST_ONE_TIME = true; 

    document.getElementById("LaserShot").play(); // need for play pause just for buffering start 
    document.getElementById("LaserShot").pause(); 
    // now you can play programmability from js 
    document.getElementById("LaserShot_CLONE").play(); 
    document.getElementById("LaserShot_CLONE").pause(); 

    } 
    else if(EXE_JUST_ONE_TIME = true){ 

    document.getElementById("MakeReadyotherAudio1").play(); 
    document.getElementById("MakeReadyotherAudio1").pause(); 

    EXE_JUST_ONE_TIME = 'NOMORE' 

    } 


    } 
相關問題