当浏览器在后台运行时收到通知时,使用 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 播放声音的主要内容,如果未能解决你的问题,请参考以下文章

在后台处理应用程序时的 iOS 推送通知

iOS 应用未收到来自 Firebase 的后台推送通知

当视图控制器进入后台时收到通知

当 iOS 在后台并收到远程通知时发送数据到 Watch

当应用程序在后台没有后台通知时收到有关 APNS 通知的通知

当应用的“位置”和“后台应用刷新”权限发生变化时,在后台收到通知