我正在制作一个网络聊天应用程序,现在我需要在新消息到达时播放通知声音。
首先,我使用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 :(得分:0)
HTML5音频和移动设备并不相处。 Howler.js(如果你正在使用2.0)使用一种解决方法来获取音频以便自动播放&#39;通过将事件处理程序附加到触发回放的第一个触摸事件来完成。如果视图未激活,则不会触发事件(甚至是模拟事件)来触发播放。
来自文档:
移动播放
默认情况下,iOS,Android等音频会被锁定,直到声音为止 在用户交互中播放,然后正常播放其余部分 页面会话(Apple文档)。的默认行为 howler.js是尝试通过播放静默解锁音频播放 第一个touchend事件的空缓冲区。这种行为可以 通过致电禁用:
Howler.mobileAutoEnable = false;
如果没有初步互动,那么你无能为力。