【问题标题】:Play a sound with Firebase when browser receives a notification while running in the background当浏览器在后台运行时收到通知时,使用 Firebase 播放声音
【发布时间】: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 播放声音。

【问题讨论】:

  • 你找到解决办法了吗?

标签: javascript notifications firebase-cloud-messaging service-worker


【解决方案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 中推送并让它播放声音。

    【讨论】:

      猜你喜欢
      • 2018-08-01
      • 2010-11-05
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多