如何在 Firebase Admin.messaging() SDK 中设置 "collapse_key"?

How do I set "collapse_key" in Firebase Admin.messaging() SDK?

admin.messaging().sendToDevice(tokens, payload)

这是有效载荷:

const payload = {
    collapse_key: "something",
    notification: {
        body: message.body || "[ Sent you a photo ]",
    },
    data:{
        "thread_id": String(thread_id),
        "message_id": String(message_id),
        "user_id": String(message.user_id),
        "created_at": String(message.created_at),
    }
};

错误:消息有效负载包含无效的 "collapse_key" 属性。有效属性为 "data" 和 "notification".

为此我需要使用 REST API 吗?如果是这样,那真的很糟糕,因为我必须为传出请求支付额外费用...

collapseKeyMessagingOptions .You pass the options as the third parameter of sendToDevice() 的 属性。

const options = {
  priority: 'high',
  collapseKey: 'myCollapseKey'
};

admin.messaging().sendToDevice(tokens, payload, options)
  .then(function(response) {
    console.log("Successfully sent message:", response);
  })
  .catch(function(error) {
    console.log("Error sending message:", error);
  });

一个完整的例子在the documentation.

对于那些使用最新的 firebase-admin SDK 和新的 send() 方法寻找更新解决方案的人,我是这样构建通知的:

{
   "token": TARGET_DEVICE_FCM_TOKEN,
   "notification": {
      "title": "Notification title",
      "body": "Optional body",
   },
   "android": {
      "collapseKey": "YOUR_KEY",
   }
   ...rest of payload
}

来源:Package types