Firebase 是不是会在应用关闭时同步记录的事件?

Posted

技术标签:

【中文标题】Firebase 是不是会在应用关闭时同步记录的事件?【英文标题】:Does Firebase synchronise logged events when app is closed?Firebase 是否会在应用关闭时同步记录的事件? 【发布时间】:2017-03-01 17:44:13 【问题描述】:

如果在应用程序运行时没有互联网连接并且之后再也没有打开应用程序,logged events 会发生什么?

当互联网连接出现时,Firebase 是否使用某种 JobScheduler(以及 ios 的其他替代方法)来同步记录的事件?

【问题讨论】:

不知道 android 的实现,但在 iOS 上,通常的应用程序在关闭后很长时间无法执行后台任务,所以我希望如果应用程序不再打开 - iOS 事件将永远丢失 @SergGr 这确实是 iOS 上 Firebase Analytics 的行为。您可以将其发布为答案吗? @FrankvanPuffelen,我更愿意等待知道它如何在 Android 上运行的人,因为我不会也不能从一般知识中扣除 iOS 的相关知识。我认为鉴于单一接受答案的 SO 限制,最好对两个平台都有单一响应 @SergGr 后台执行怎么样 (developer.apple.com/library/content/documentation/iPhone/…)。是否可以使用“随机获取少量内容”或“跟踪用户位置”来发送数据? 至于Executing Finite-Length Tasks 引用您引用的规范“如果您的应用处于任务中间并且需要一点额外时间来完成该任务”。根据我在真实硬件上的经验(与模拟器不同),您的“额外时间”仅限于大约 5 分钟,这对于您的“设备离线”情况可能还不够。至于Implementing Long-Running Tasks,它不能由“常规”应用程序完成,因为它需要特殊的元数据标志,Apple 在批准 AppStore 之前会检查它们,因此 Firebase 不能依赖它们(你可能无论如何都不会得到它们) . 【参考方案1】:

在问题的 cmets 中,@SergGr 和 @Frank 表示在 iOS 上,该事件永远不会上传。

在 Android 上,我的观察是事件被记录到处理缓冲和上传的共享系统服务(不是应用程序的一部分)。因此,在没有互联网连接时记录的事件稍后会由服务上传,无论原始应用程序是否仍在运行。

enabling analytics logging 可以观察到此行为,并在adb 窗口中查看日志输出。系统服务的标签是FA-SVC。

下面包含一些摘录的日志输出示例。我为我的测试执行了这些步骤:

    开启飞行模式 运行应用程序以生成事件 将应用置于后台,从最近的任务列表中滑动以将其杀死 禁用飞行模式 等待 FA-SVC 运行和上传事件(这可能长达一个小时) 已检查 FA-SVC 记录的上传事件数据的缓冲区,以确认包含应用事件

// uploading seems occur about every hour
03-02 07:40:42.397 V/FA-SVC  ( 1889): Upload scheduled in approximately ms: 3599957
// the service detects connectivity changes
03-02 06:47:16.496 V/FA-SVC  ( 1889): NetworkBroadcastReceiver received action: android.net.conn.CONNECTIVITY_CHANGE
// this log marks the start of upload; followed by logs for each uploaded event
03-02 07:40:41.757 V/FA-SVC  ( 1889): Uploading data. app, uncompressed size, data: com.qbix.xxxx, 3450

【讨论】:

以上是关于Firebase 是不是会在应用关闭时同步记录的事件?的主要内容,如果未能解决你的问题,请参考以下文章

在使用 firebase/firestore 服务的 Google Play 商店中发布应用程序时,我是不是需要做任何额外的工作? [关闭]

当该应用的通知关闭时,在 Android 上接收 Firebase 静默通知

Firebase 生产准备好 100% 离线应用了吗? [关闭]

关闭 fstream 是不是保证文件系统同步?

Firebase onDataChange Listener 是不是总是在应用程序关闭后自动删除?或者,不是而且账单也在增加?

Swift Firebase 加载记录延迟很长