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

问题描述

我正在将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中折叠。

我在做什么错了?

解决方法

我已关注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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...