我正在创建一个iOS和Android本机应用程序,使用Firebase发送推送通知。
它工作正常,但是当我关闭设备并发送一些通知时,启动设备后,我只会收到最后一次发送给iOS的消息,发送给Android的消息也是如此。
即使设备处于脱机状态且已启动,有没有办法接收所有推送通知?
答案 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错误。
意味着它应该正在接收挂起的消息。除非设备已恢复出厂设置或已卸载。
Messaging Concepts and Options(尽管已弃用,但现在建议参考上面链接的FCM消息传递)