如何折叠FCM发送的Web推送通知

时间:2020-09-07 13:07:50

标签: firebase firebase-cloud-messaging firebase-admin web-push

我正在将FCM与firebase-admin结合使用,以向多个客户端发送Web推送通知。我想用新邮件替换旧邮件。

这就是我的称呼方式

return await admin.messaging().sendMulticast({
  tokens,
  notification: {
    title: "Message Title",
    body: "Message body.",
  },
  data: {
    type: "ring",
    callId,
  },
  webpush: {
    fcmOptions: {
      link: process.env.PWA_APP_URL,
    },
    headers: {
      Urgency: "high",
    },
  },
  android: {
    collapseKey: "ring",
    priority: "high",
    ttl: 10,
    notification: {
      color: "#ff0000",
      defaultSound: true,
      sound: "default",
      lightSettings: {
        color: "#ffcc00",
        lightOffDurationMillis: 1000,
        lightOnDurationMillis: 1000,
      },
      tag: "ring",
      vibrateTimingsMillis: [1000, 1000],
      visibility: "public",
      priority: "max",
    },
  },
});

当消息到达Android应用客户端时,由于android.collapseKey属性,消息已折叠。但是我在Web应用程序中无法获得相同的行为。

根据文档,Web通知有一个Topic选项,但是我不确定where to put it。我试图将其用作webpush.headers.Topic属性,但没有成功。邮件不会在Android / Chrome中折叠。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我已关注collimarco's tip,可以使用showNotification method折叠通知。

在firebase-admin / server代码中,我必须删除邮件有效负载中的通知字段。现在只是一个data message

return await admin.messaging().sendMulticast({
  tokens,
  data: {
    type: "ring",
    callId,
  },
});

在Web应用程序中,我创建了一个background message handler。现在,当我使用带有showNotification的{​​{1}}属性发送新消息时,可以调用tag方法。

renotify=true

仅在消息有效负载上设置这些属性会很棒。