如何在Service Worker中播放声音,甚至在Chrome中振动?

11

我正在使用service workers。我需要它来实现push通知。我想要实现的是,当我收到通知时,至少应该有声音或震动。

self.registration.showNotification(title, {
   body: body,
   icon: './assets/images/icons/icon_144x144.png',
   vibrate: [200, 100, 200, 100, 200, 100, 200],
});

我在收到通知时有这段代码。

问题1:根本没有震动。后来我进行了一些调试。

https://googlechrome.github.io/samples/notifications/vibrate.html 这个不会使我的手机振动。

https://googlechrome.github.io/samples/vibration/index.html 这个让我的手机振动。

为什么第一个链接不会振动?我是在Android Chrome上进行测试的。

问题2:看起来在火狐浏览器上,它确实有默认的声音。为什么谷歌没有相同的声音?它只会变成静音。我没办法播放声音吗?至少我想要振动它...


第一段代码请求权限。也许它们没有被授予? - Mister Smith
很不幸,他们是的。 :( - Giorgi Lagidze
你的手机解锁了吗?我的有时在解锁或通知应用程序在前台时不会震动。 - JensV
showNotification方法中的vibrate属性已被移除,调用它后请直接使用vibrate函数。 - Tofandel
验证 Chrome 版本。以下是支持的版本列表 - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification - Alok Mali
1个回答

3
根据这里显示,从Android O版本开始,无论Chrome版本如何,showNotification()vibrate属性在Android设备上不再受支持,这可能是第一个链接无法工作的原因。
但是您可以使用vibrate()方法(第二个链接所做的),该方法支持32版本之后的Chrome版本。 但请注意,在Chrome 60之后,此方法只能响应用户手势才能工作。有关详细信息,请参见https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vibrate
添加一些更多的历史记录:
根据Chromium开发人员的说法:

不幸的是,几年前我们不得不在Android O中停用它 - 通知通道的引入意味着关注抽屉(振动、声音和所有内容)现在是按通道而不是按通知进行管理的,Chrome没有启用让开发人员配置的选项。

其他供应商对此没有任何兴趣。


很遗憾,在Chrome 60之后,vibrate()只能在响应用户手势时使用。 - lfalin
@GiorgiLagidze 你找到解决方案了吗?我也遇到了同样的问题,但仍然找不到答案。 - Garsivirus
1
@Garsivirus 我所做的是当服务工作者接收到通知时,我向所有客户端发布一条消息,在源代码中,我监听此消息,当收到时,播放声音。这有时不起作用,因为它首先需要用户手势,但它与此相似。 - Giorgi Lagidze
我也遇到了手势要求的同样问题,真是麻烦... - Garsivirus
非常感谢您的回复,@GiorgiLagidze。 - Garsivirus
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接