离线输入的数据在重新联机时不会同步

时间:2017-12-04 20:07:30

标签: android firebase firebase-realtime-database firebase-authentication

有些用户表示他们会创建离线内容,当他们上线时会丢失数据。他们只是消失了。

我不知道从哪里开始,在我的测试中,这不会发生。

是否存在身份验证问题?我今天使用表格电子邮件和密码。

我正在使用minSdkVersion 16并编译'com.google.firebase:firebase-auth:10.2.1'

我提到了Auth,为什么不清楚当用户失去身份验证时firebase的行为如何。我们假设它丢失了身份验证并插入了新数据(丢失身份验证后),firebase会做什么?

1 - 阻止插入 - 如果这是行为,我的问题将不会是紧缩,因为数据已插入,我可以在APP中看到它。

2 - 不阻止插入,但是当它在线时,这些数据将会丢失(这是我的怀疑)

3 - 不阻止插入,将插入放入队列并更新基础(这是我希望的,因为如果用户出于意外原因丢失了脱机身份验证,我将无需再次进行身份验证,直到在线)。

3 个答案:

答案 0 :(得分:0)

应用程序脱机,转到后台并最终被Android杀死以节省资源是正常的。如果您想在应用程序离线时保留所有写入的数据并且稍后被杀死,那么您应该enable persistence,默认情况下已关闭:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

当应用再次启动并上线时,书面数据将会同步。

离线时不支持交易。

答案 1 :(得分:0)

来自Firebase文档docs,它说:

  

应用离线时执行的所有交易都是   排队。一旦应用重新获得网络连接,交易   被发送到实时数据库服务器。

但在Firebase发出警告后立即发布:

  

即使启用了持久性,交易也不会持续存在   应用重启。所以你不能依赖离线完成的交易   致力于您的Firebase实时数据库。提供最好的用户   经验,您的应用程序应显示尚未保存事务   进入您的Firebase实时数据库,或确保您的应用   手动记住它们并在应用程序重新启动后再次执行它们。

现在我不太确定您的用户正在经历的确切情况,但我确实有一些关于如何处理此问题的建议。

首先,由于当设备离线并且应用程序进入后台时交易持续存在的可能性非常低,您还可以在允许用户更新应用之前检查网络连接。这是一个简单的方法,但它可以解决问题。

此外,您可以使用Firebase的建议并在每次上传时附加一个监听器,并在您的用户界面中将离线内容标记为“x”(不是一个不错的选择)或者表示内容尚未上传的内容。类似于WhatsApp时钟图标,显示在尚未发送的邮件上。然后,当您的应用恢复或重新启动时,请检查所有未发送的内容并重新上传。

第三,就像在第二种情况下一样,你可以在该内容上添加一条错误消息,但这次告诉用户在重启时重新发送它们。

我基本上只是总结了文档所说的所有内容,但至少这应该会让你走上正确的道路来解决这个问题。

答案 2 :(得分:0)