Javascript 手机锁定期间是否可以触发音频播放

Javascript 手机锁定期间是否可以触发音频播放,javascript,html,notifications,howler.js,Javascript,Html,Notifications,Howler.js,我正在制作一个网络聊天应用程序,现在我需要在新消息到达时播放通知声音 首先,我用它来播放声音。在howler中,我们可以开始播放声音,然后如果我们锁定屏幕或更改浏览器选项卡焦点,它将继续播放但是如果标签打开且手机屏幕被锁定,它不会开始播放声音,如果用户在另一个标签上且应用程序在另一个标签上打开,它也不会播放声音 所以基本上我的问题是,是否可以在屏幕锁定时开始播放声音,或者在用户处于另一个选项卡时开始播放声音? app.js var notify_sound = new Howl({ sr

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

首先,我用它来播放声音。在howler中,我们可以开始播放声音,然后如果我们锁定屏幕或更改浏览器选项卡焦点,它将继续播放但是如果标签打开且手机屏幕被锁定,它不会开始播放声音,如果用户在另一个标签上且应用程序在另一个标签上打开,它也不会播放声音

所以基本上我的问题是,是否可以在屏幕锁定时开始播放声音,或者在用户处于另一个选项卡时开始播放声音?

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();
        }
    }
var notify_sound=新嚎叫({
src:['./assets/sounds/notify2.mp3'],
卷数:1.0
});
.
.
.
.
.
.
.
.
如果(类型=“用户”){
if(userAddress==远程地址){
键入.html(“”).fadeOut('fast');
messages.append(“
  • ”+obj.message+”

    “+time+”

    “+userAddress+”

    ); } 否则{ 键入.html(“”).fadeOut('fast'); messages.append(“
  • ”+obj.message+”

    “+time+”

    “+userAddress+”

    ); 通知声音。播放(); } }
  • HTML5音频和手机的关系并不太融洽。Howler.js(如果您使用的是2.0)通过将事件处理程序附加到触发播放的第一次触摸事件,使用一种变通方法将音频“自动播放”。如果视图未处于活动状态,则不会有触发播放的触摸事件(即使是模拟事件)

    从文档中:

    移动播放

    默认情况下,iOS、Android等设备上的音频将被锁定,直到发出声音 在用户交互中播放,然后正常播放其余部分 页面会话的一部分(苹果文档)。的默认行为 howler.js试图通过播放来无声解锁音频播放 第一个touchend事件上的空缓冲区。这种行为可以是 通过呼叫禁用:

    Howler.mobileAutoEnable=false


    如果没有初始交互,你就无能为力。

    HTML5音频和移动设备不能真正相处。Howler.js(如果您使用的是2.0)通过将事件处理程序附加到触发播放的第一次触摸事件,使用一种变通方法将音频“自动播放”。如果视图未处于活动状态,则不会有触发播放的触摸事件(即使是模拟事件)

    从文档中:

    移动播放

    默认情况下,iOS、Android等设备上的音频将被锁定,直到发出声音 在用户交互中播放,然后正常播放其余部分 页面会话的一部分(苹果文档)。的默认行为 howler.js试图通过播放来无声解锁音频播放 第一个touchend事件上的空缓冲区。这种行为可以是 通过呼叫禁用:

    Howler.mobileAutoEnable=false


    如果没有初始交互,您就无能为力。

    因此最终可以确定,在屏幕锁定期间不会播放声音。您可能可以通过连续播放的精灵来绕过它。虽然我还没有测试过这种方法。但是如果客户端的连接速度很慢,连续播放会占用客户端的资源。播放时与连接没有多大关系。我的建议就像半秒钟的循环无声mp3,只是为了让声音保持活跃。或者,您可以研究使用基于用户代理的通知API来播放系统声音。我不知道你是否可以定制声音。请注意,这种方法需要用户授予的权限。您能举一个关于定制声音的例子吗?许可不是问题。所以最终可以确定的是,在屏幕锁定期间不会播放声音。你可以用一个连续播放的精灵来破解它。虽然我还没有测试过这种方法。但是如果客户端的连接速度很慢,连续播放会占用客户端的资源。播放时与连接没有多大关系。我的建议就像半秒钟的循环无声mp3,只是为了让声音保持活跃。或者,您可以研究使用基于用户代理的通知API来播放系统声音。我不知道你是否可以定制声音。请注意,这种方法需要用户授予的权限。您能举一个关于定制声音的例子吗?许可不是问题。