【问题标题】:Sound does not work in service worker in Chrome desktop push notificationChrome 桌面推送通知中的服务人员中的声音不起作用
【发布时间】:2017-03-04 13:28:42
【问题描述】:

当我收到通知时,我正在尝试在 Chrome 浏览器的推送通知中播放声音。 而且我已经在我的网站上设置了浏览器推送通知,但它没有播放声音。我已经通过声音选项,但没有声音。

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

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

【问题讨论】:

标签: javascript google-chrome audio push-notification service-worker


【解决方案1】:

或者您可以全局声明 myAudio 对象并在弹出通知之后或之前使用 play() 函数。

myAudio = new Audio("alert_tone.mp3");

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

【讨论】:

  • 这将在加载页面时播放音频 - 但在发送通知时不会。
【解决方案2】:

目前浏览器不支持 Notification.sound 见https://developer.mozilla.org/en/docs/Web/API/notification

【讨论】:

  • 但是为什么它有一个名为“silent”的属性?文档说“指定通知是否应该是静音的——即,无论设备设置如何,都不应该发出声音或振动。”
【解决方案3】:

您可以尝试使用 chrome web-extension background_pages

它将收听service worker 并播放音频 简单的方法是在服务工作者中请求 URL,并使用 chrome.webRequest 在后台脚本中捕获它,如 link

中所述
chrome.webRequest.onBeforeRequest.addListener(
    callback, filter, opt_extraInfoSpec);

正如thread中提到的那样

更新 如本文所述link

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

“chrome-extension” 被添加为允许服务人员的方案。

serviceworker script

首先你需要在manifest.json注册你的扩展

  • 在 service worker 中请求 url
  • 使用chrome.webRequest.onBeforeRequest.addListener在后台脚本中捕获它
  • 播放background.js中的声音

正如@Alexander 所说,目前 MDN 中不支持声音

【讨论】:

  • 感谢您的回答,但后台页面在 ServiceWorker 中不起作用
【解决方案4】:

你可以在下面的链接中看到

在撰写本文时,没有浏览器支持此选项。

https://developers.google.com/web/fundamentals/push-notifications/display-a-notification#sound

【讨论】:

    猜你喜欢
    • 2021-03-29
    • 2023-04-03
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多