Firebase云消息传递:在javascript客户端

时间:2017-10-05 01:44:11

标签: javascript firebase firebase-cloud-messaging

我有一个实时评分显示网站,该网站使用Google的渠道API实施,以将实时评分更新推送到浏览器。由于Google正在关闭渠道API,因此我必须迁移到Firebase云消息传递。

当我迁移到FCM时,我不得不添加一个服务工作者javascript文件(firebase-messaging-sw.js)。每当分数更新被推送到浏览器时,如果用户在另一个浏览器选项卡中或用户已关闭我的网页选项卡,则会向用户显示通知。

我不需要此通知,我想禁用它。此外,当用户移动到另一个浏览器选项卡时,我想阻止推送消息进入服务工作者并将其路由到我的网页,这样当用户再次返回选项卡时,最新的分数将在网页中更新。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

您应该在消息正文中传递一个参数(取决于您需要执行的操作),如下所示:

$msg = [
  'title' => pushTitle,
  'body'=> pushBody,
  'icon'=> icon.png,
  'image'=> image.png,
  'active'=> 1
];

以上是PHP,但在任何编程语言中也都可以以相同的方式运行。如果您使用Firebase,则应该使用云功能。

然后在您的js文件中:

messaging.setBackgroundMessageHandler(function(payload) {
  console.log('Received background message', payload);

  if(payload.data.active == 1){
    return;
  }
  var notificationTitle = payload.data.title;
  var notificationOptions = {
    body: payload.data.body,
    icon: payload.data.icon,
    image: payload.data.image
  };

  return self.registration.showNotification(notificationTitle, notificationOptions);
});

如果我有您的代码(到目前为止您做了什么),我会给您确切的答案。 如果您还有其他问题,请随时提出。