2016-08-02 107 views
1

我正在製作網絡聊天應用程序,現在我需要在新消息到達時播放通知聲音。在手機鎖期間是否可以觸發音頻播放

首先我使用howler.js播放聲音。在咆哮中,我們可以開始播放聲音,然後如果我們鎖定屏幕或更改瀏覽器選項卡焦點,它會繼續播放。 如果打開標籤並且移動屏幕被鎖定,則它不會播放聲音,如果用戶在另一個標籤上打開了另一個標籤上的應用程序,則它不會播放。

所以基本上我的問題是,即使在屏幕被鎖定時開始播放聲音,或者當用戶在另一個標籤上時開始播放聲音是可能的嗎?

app.js

var notify_sound = new Howl({ 
    src: ['./assets/sounds/notify2.mp3'], 
    volume: 1.0 
}); 
. 
. 
. 
. 
. 
. 
. 
. 
if(type == "user"){ 
     if(userAddress == remoteAddress) { 
      typing.html('').fadeOut('fast'); 
      messages.append('<li class="self"><p class="message">'+ obj.message + '</p><p class="time">' + time +'</p></li><p class="username_self">' + userAddress + '</p>'); 
     } 
     else { 
      typing.html('').fadeOut('fast'); 
      messages.append('<li class="other"><p class="message">'+ obj.message + '</p><p class="time">' + time +'</p></li><p class="username_other">' + userAddress + '</p>'); 

      notify_sound.play(); 
     } 
    } 

回答

0

HTML5音頻和移動沒有真正相處。 Howler.js(如果您使用的是2.0)通過將事件處理程序附加到觸發回放的第一個觸摸事件,使用解決方法將音頻視爲「自動播放」。如果視圖未激活,則不會有觸摸事件(即使是模擬的)觸發播放。

從文檔:

移動播放

默認情況下,在iOS,Android的音頻,等被鎖定,直到聲音 用戶交互中播放,然後將其發揮正常其餘 的頁面會話(Apple文檔)。 howler.js的默認行爲是通過在第一個觀看事件中播放 空緩衝區來試圖靜音解鎖音頻播放。這種行爲可以通過調用 禁用:

Howler.mobileAutoEnable = false;

如果沒有最初的交往,有沒有什麼可以做。

+0

因此最終確定在屏幕鎖定過程中聲音不會被播放。 – Ayan

+0

你可以用連續播放的精靈來解決它。雖然我沒有測試過這種方法。 –

+0

但是如果他連接速度很慢,連續播放它會佔用客戶端的資源。 – Ayan

相關問題