Chrome桌面推送通知中的Service Worker无法播放声音

15

我在Chrome浏览器中收到通知时,想要播放推送通知的声音。 我已经在我的网站上设置了浏览器推送通知,但它不会发出声音。 我已经尝试了调整声音选项,但没有听到声音。

option = {
     'body' : 'This is tst Description',
     'icon' : 'icon.png',
     'silent' : 'false',
     'sound' : 'bell.mp3'
}

如果还有其他方法可以在通知中播放声音,请告诉我。


1
是的,浏览器不支持声音通知。 - bvakiti
1
如果您知道何时播放声音,可以手动播放它。https://dev59.com/_Wkw5IYBdhLWcg3wJXIh。 - Kira
4个回答

5
或者您可以全局声明myAudio对象,并在通知弹出之前或之后使用play()函数。
myAudio = new Audio("alert_tone.mp3");

var notification = new Notification("Hi there", options);
myAudio.play();

1
这将在页面加载时播放音频 - 但不会在发送通知时播放。 - ESP32

4

但是为什么它有一个名为“静音”的属性呢?文档中写道:“指定通知是否应该为静音 - 即,无论设备设置如何,都不会发出声音或振动。” - wangqi060934

4
你可以尝试使用chromeweb-extensionbackground_pages。它将监听service worker并播放音频。其中一种简单的方法是在service worker中请求URL,并使用chrome.webRequest在后台脚本中捕获它,如link中所述。
chrome.webRequest.onBeforeRequest.addListener(
    callback, filter, opt_extraInfoSpec);

如在本 帖子 中提到的

更新 如在本 链接 中提到的

Service Workers 需要安全来源,例如 HTTPS。 chrome-extension:// 页面不是 HTTP/HTTPS,但是是安全的,因此这个更改成为允许扩展注册 Service Worker 的必要步骤。

"chrome-extension" 被添加为允许 service workers 的协议。

serviceworker 脚本

首先需要在 manifest.json 中注册您的扩展名

  • 请求服务工人中的 URL
  • 使用 chrome.webRequest.onBeforeRequest.addListener 在后台脚本中进行捕捉
  • background.js 中播放声音

正如@Alexander所提到的,目前MDN不支持声音。


谢谢您的回答,但是在ServiceWorker中背景页面无法工作。 - Bhavik Hirani

3

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