Firebase Cloud Messaging上游消息的文档(从设备到服务器的消息)描述了如果设备处于脱机状态,消息将如何排队等待传送。
如果设备处于脱机状态或FCM服务无法将上游消息转发到您的服务器,则Android客户端应用实例最多可累积20条待处理消息。
iOS:
FCM客户端库在客户端应用程序上缓存消息,并在客户端具有活动服务器连接时发送消息。
但是,如果应用程序在邮件发送之前关闭了怎么办?一旦连接恢复,Firebase是否会尝试使用任何类型的后台服务来传递此类消息?或者他们排队等到下次打开应用程序,还是完全丢弃?
编辑:在我的实验中,至少有一个持久队列可以在应用重启时保存消息。但我仍然不确定(在每个操作系统上)导致Firebase消息传递服务运行的情况,特别是在应用程序背景化的情况下。
答案 0 :(得分:0)
在您提到的iOS部分中,它明确指出:
FCM客户端库缓存客户端应用上的消息,并在客户端具有活动服务器连接时发送消息。
据说,我认为Android的情况也是如此。只要没有为客户端应用程序清除缓存,就可以安全地说数据仍然存在。但是,记住@DanHulme在answer中提到的内容也是很好的:
缓存后台流程
不要忘记Android将后台进程保留在内存中,即使它们已经停止运行,除非/直到另一个进程需要使用该内存。如果应用程序“停止”,它就不会使用任何资源,即使Android将其保留在内存中也是如此。
所以我认为最好在您的客户端应用程序中实现检查程序,无论上游消息是否已成功发送,并在以后重新发送它(当连接已经可用)如果没有。