2016-08-02 48 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

相关问题