当浏览器在后台运行时收到通知时,使用 Firebase 播放声音
Posted
技术标签:
【中文标题】当浏览器在后台运行时收到通知时,使用 Firebase 播放声音【英文标题】:Play a sound with Firebase when browser receives a notification while running in the background 【发布时间】:2017-10-17 07:03:43 【问题描述】:我想知道如何使用 Firebase Cloud Messaging (FCM) 播放声音 当 Chrome、Firefox 等网络浏览器在后台运行时收到通知消息。
在后台运行时通知
要在应用处于后台时接收消息,在 FCM 中,调用 service worker 中的 setBackgroundMessageHandler
firebase-messaging-sw.js
messaging.setBackgroundMessageHandler(function(payload)
console.log('[firebase-messaging-sw.js] Received background message ', payload);
...
return self.registration.showNotification(notificationTitle, notificationOptions);
);
但是,音频对象window.AudioContext
不能在 service worker 中调用。此外,目前任何浏览器都不支持通知属性Notification.sound
。
我想知道当应用在后台时如何使用 FCM 播放声音。
【问题讨论】:
你找到解决办法了吗? 【参考方案1】:虽然目前不支持声音,但您应该能够在服务人员内部显示通知时振动用户的设备。这可能足以引起他们的注意。 (如果你真的需要……)
这是live sample的摘录:
registration.showNotification('Vibration Sample',
body: 'Your title here.',
icon: 'path/to/icon.png',
vibrate: [200, 100, 200, 100, 200, 100, 200],
tag: 'vibration-sample'
);
【讨论】:
感谢您的有用评论。我想在 PC 网络浏览器中播放声音。也许,振动仅适用于移动设备的浏览器。很抱歉缺少描述。【参考方案2】:由于 showNotification 没有 sound 属性,您将无法为背景消息添加通知声音。
当从服务工作者调用时,您也无法在事件侦听器中添加函数,因为服务工作者无法从这里访问窗口。
您可以在 showNotification 中添加振动,这同样只允许用于移动设备。
【讨论】:
【参考方案3】:您应该能够在事件侦听器中添加一个函数,以便在 service-worker 中推送并让它播放声音。
【讨论】:
以上是关于当浏览器在后台运行时收到通知时,使用 Firebase 播放声音的主要内容,如果未能解决你的问题,请参考以下文章