在设备离线时接收所有推送通知



我正在创建一个iOS和Android原生应用程序,使用Firebase发送推送通知。

它工作正常,但是当我关闭设备并发送一些通知时,在启动设备后,我只收到最后一个为iOS发送的通知,对于Android也是如此。

有没有办法接收所有推送通知,即使设备处于离线状态并已启动?

引用几个参考:

苹果:

Apple 推送通知服务包括服务质量 (QoS( 执行存储转发功能的组件。如果 APNs 尝试 要发送通知且目标设备处于脱机状态,APNs 将通知存储有限的时间并传递 当设备再次可用时。此组件仅存储 每个设备和每个应用的最新通知。如果设备是 脱机,发送针对该设备导致的通知请求 要丢弃的上一个请求。如果设备在 很长一段时间,APN中存储的所有通知都会被丢弃。

  • 此组件仅存储每个设备和每个应用的最新通知。
  • 如果设备处于脱机状态,则发送针对该设备的通知请求会导致丢弃以前的请求。

这意味着只保留一个通知,发送新通知会替换旧通知。所以我认为这是不可能的。

本地和远程通知编程指南

人造人:

在 Android 和 Web/JavaScript 上,您可以指定 一条消息。该值的持续时间必须介于 0 到 2,419,200 秒之间 (28 天(,它对应于 FCM 存储并尝试传递邮件。不这样做的请求 包含此字段默认为最长期限为四周。

目前,iOS 上的通知消息不支持time_to_live

如果设备未连接到 GCM,则将存储消息 直到建立连接(再次遵循折叠键 规则(。建立连接后,GCM 会传递所有挂起的内容 向设备发送消息。如果设备再也无法连接(对于 实例,如果是恢复出厂设置(,消息最终会计时 输出并从 GCM 存储中丢弃。默认超时为 4 周, 除非设置了time_to_live标志。

最后,当 GCM 尝试将消息传递到设备和 应用程序已卸载,GCM 将立即丢弃该消息 并使注册令牌失效。将来尝试发送 向该设备发送消息将导致"未注册"错误。

  • 建立连接后,GCM 会将所有挂起的消息传送到设备。
  • 如果
  • 设备再也无法连接(例如,如果已恢复出厂设置(,则消息最终将超时并从 GCM 存储中丢弃。
  • 默认超时为 4 周,除非设置了 time_to_live 标志。
  • 最后,当 GCM 尝试向设备传递消息并且应用程序已卸载时,GCM 将立即丢弃该消息并使注册令牌失效。

这意味着它应该接收挂起的消息。除非设备恢复出厂设置或卸载。

关于 FCM 消息

消息传递概念和选项(尽管这已被弃用,现在建议引用 FCM 消息传递,上面链接(

最新更新