You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Firebase Admin SDK发送通知,iOS端是否有TTL替代方案?

解决iOS端通知无重发的配置问题

嘿,我来帮你搞定这个iOS端的配置需求!

你已经在Android端通过ttl实现了短存活时间的需求,而对应iOS的APNs,要实现「发送失败就完全不重发」的效果,核心是设置apns.expiration字段为0,同时可以配合调整优先级来强化这个行为。

修改后的完整Payload代码

const payload = { 
  notification: { 
    title: 'New Appointments!', 
    body: '', 
  }, 
  data: {}, 
  android: { 
    ttl: 1000, 
  }, 
  apns: { 
    expiration: 0, // 关键配置:通知立即过期,APNs不会存储或重发
    priority: 10, // 可选:高优先级,确保立即尝试发送,失败即放弃
    payload: { 
      aps: { 
        badge: 1, 
        sound: "default" 
      }, 
    }, 
  }, 
}; 

admin.messaging().send(payload).then((response) => {
  // 处理成功回调
}).catch((error) => {
  // 处理发送错误
});

关键参数说明

  • apns.expiration:这个字段接受Unix时间戳(单位为秒)。当设置为0时,APNs会判定该通知立即过期——如果第一次推送尝试失败(比如设备离线),APNs不会保存通知等待后续重发,直接丢弃,完全符合你「失败就不重发」的要求。
  • apns.priority:设置为10表示高优先级推送,APNs会立即尝试发送这条通知,而不是进入延迟队列。结合expiration:0,能最大化确保只有一次发送机会,失败就彻底放弃。

这样配置后,你的iOS通知就会和Android端的预期行为一致:只有一次发送尝试,失败后不会再重发。

内容的提问来源于stack exchange,提问作者AlexZvl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:21:15