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

时间:2018-09-26 16:29:16

标签: android ios firebase firebase-cloud-messaging

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

它工作正常,但是当我关闭设备并发送一些通知时,启动设备后,我只会收到最后一次发送给iOS的消息,发送给Android的消息也是如此。

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

1 个答案:

答案 0 :(得分:4)

引用了几个参考:

iOS:

  

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

  • 此组件仅存储每个设备和每个应用程序的最新通知。
  • 如果设备离线,则发送针对该设备的通知请求会导致之前的请求被丢弃。

这意味着仅保留一个通知,而发送新通知将替换旧通知。所以我认为不可能。

Local and Remote Notification Programming Guide

Android:

  

在Android和Web / JavaScript上,您可以指定最大使用寿命   一个消息。该值的持续时间必须为0到2,419,200秒   (28天),它对应于   FCM存储并尝试传递消息。没有的要求   包含此字段的默认期限为最长四个星期。

  

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

  

如果设备未连接到GCM,则消息将被存储   直到建立连接为止(再次遵守折叠键)   规则)。建立连接后,GCM会发送所有待处理的邮件   消息到设备。如果设备再也无法连接(对于   实例(如果已恢复出厂设置),则该消息最终将计时   并从GCM存储中丢弃。默认超时为4周,   除非设置了time_to_live标志。

  

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

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

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

About FCM Messages

Messaging Concepts and Options(尽管已弃用,但现在建议参考上面链接的FCM消息传递)