如何将 apns-collapse-id 与 FCM 一起使用?

Posted

技术标签:

【中文标题】如何将 apns-collapse-id 与 FCM 一起使用?【英文标题】:How to use apns-collapse-id with FCM? 【发布时间】:2020-04-09 10:51:40 【问题描述】:

我知道这个问题已经被问过很多次了,但没有一个答案对我有用。有些问题甚至没有答案。

我正在尝试在 ios 上捆绑或分组类似的通知。我正在使用 FCM Cloud Functions 来触发通知。

以下是我尝试过的方法

const payload = 
        notification: 
          title: "Your medical history is updated" + Math.random(),
          tag: "MedicalHistory",
        ,
        data: 
          click_action: "FLUTTER_NOTIFICATION_CLICK",
          sound: "default",
          status: "done",
        ,
      ;

      const patchedPayload = Object.assign(, payload, 
        apns: 
          headers: 
            "apns-collapse-id": "MedicalHistory",
          ,
        ,
      );

      const options = 
        priority: "high",
        collapseKey: "MedicalHistory",
      ;


await admin
          .messaging()
          .sendToDevice("MY_TOKEN", patchedPayload, options);

上面的代码不起作用

const payload = 
        notification: 
          title: "Your medical history is updated" + Math.random(),
          tag: "MedicalHistory",
        ,
        data: 
          click_action: "FLUTTER_NOTIFICATION_CLICK",
          sound: "default",
          status: "done",
        ,
        apns: 
          headers: 
            "apns-collapse-id": "MedicalHistory",
          ,
        ,
      ;



const options = 
            priority: "high",
            collapseKey: "MedicalHistory",
          ;

 await admin
              .messaging()
              .sendToDevice("MY_TOKEN", payload, options);

这也不行。

我不明白将apns-collapse-id 放在哪里。云函数示例也没有显示这一点。我也找不到带有代码的文档

【问题讨论】:

你能试着用collapse_key改变你的options参数collapseKey吗?我查看了您的第二个有效负载,您似乎将apns-collapse-id. 放在了正确的位置。 也许 sendToDevice 函数给出了一个承诺,所以放入 .then 和 .catch 并尝试查找错误。在您的问题中包含日志 【参考方案1】:

我建议使用firebase-admin 库中最新的send 函数,用法描述为here。

它似乎工作得很好,而且更容易应用。

带有 android/ios 特定标头的消息示例:

// common data for both platforms
const notification = 
 title: 'You liked!',
 body: 'You really liked something...',

const fcmToken = '...'

// android specific headers
const android = 
  collapseKey: '0'


// ios specific headers
const apns = 
  headers: 
    "apns-collapse-id": '0'
  


// final message
const message = 
 token: fcmToken,
 notification: notification,
 android: android,
 apns: apns,


// send message
admin.messaging().send(message).catch(err => console.error(err));

【讨论】:

以上是关于如何将 apns-collapse-id 与 FCM 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

在STEP7 OB1块中如何写入FC105程序?

深度模型压缩:BN和Conv/Fc参数合并

EventBridge 与 FC 一站式深度集成解析

step7编程软件中如何给编好的FC,FB进行加密

如何在某个类/元素之后将内容附加到元素[关闭]

推送通知内的文本倒数计时器