在firebase云消息传递中,有没有替代ttl“生存时间”的iOS?

时间:2018-05-02 12:58:00

标签: ios firebase firebase-cloud-messaging

我使用admin sdk发送通知。

这是我的有效载荷。我能为Android设置ttl(生存时间),但我不确定如何为iOS设置它。

基本上如果通知无法发送,那么我根本不想重新发送。

         const payload = {
             notification: {
                title: 'New Appointments!',
                body: '',
              },
             data: {},
             android: {
               ttl: 1000, 
             },
             apns: {
               payload: {
                 aps: {
                   badge: 1,
                  "sound":"default"
                 },
               },
             },
            };
admin.messaging().send(payload).then((response) => {})

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找apns-expiration

  

以星期(UTC)表示的UNIX纪元日期。此标头标识通知不再有效的日期,可以丢弃。

     

如果此值非零,则APN会存储通知并尝试至少传递一次,如果第一次无法传递通知,则会根据需要重复尝试。如果值为0,则APN会将通知视为立即过期,并且不会存储通知或尝试重新发送通知。

FCM docs for ttl

中可以看到这方面的一个例子
{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    },
    "apns":{
      "headers":{
        "apns-expiration":"1604750400"
      }
    },
    "android":{
      "ttl":"4500s"
    },
    "webpush":{
      "headers":{
        "TTL":"4500"
      }
    }
  }
}

答案 1 :(得分:0)

我遇到的问题格式错误,因为我正在阅读错误的文档。

https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#ApnsConfig

 "apns":{
      headers:{
        "apns-expiration":"1604750400"
      }
    }