在手机锁定期间可以触发音频播放

时间:2016-08-02 08:49:46

标签: javascript html5 notifications howler.js

我正在制作一个网络聊天应用程序,现在我需要在新消息到达时播放通知声音。

首先,我使用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();
        }
    }

1 个答案:

答案 0 :(得分:0)

HTML5音频和移动设备并不相处。 Howler.js(如果你正在使用2.0)使用一种解决方法来获取音频以便自动播放&#39;通过将事件处理程序附加到触发回放的第一个触摸事件来完成。如果视图未激活,则不会触发事件(甚至是模拟事件)来触发播放。

来自文档:

  

移动播放

     

默认情况下,iOS,Android等音频会被锁定,直到声音为止   在用户交互中播放,然后正常播放其余部分   页面会话(Apple文档)。的默认行为   howler.js是尝试通过播放静默解锁音频播放   第一个touchend事件的空缓冲区。这种行为可以   通过致电禁用:

     

Howler.mobileAutoEnable = false;

如果没有初步互动,那么你无能为力。