Firebase实时数据库在脱机模式下的行为不一致

时间:2016-11-19 19:34:27

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

我在我的应用中使用 Firebase实时数据库。它运作得很好,我对此非常满意。但最近我碰到了一个边缘案例,因为我的一些用户正在丢失他们的数据。

情景#1

用户使用 Internet连接登录应用程序(Firebase身份验证),并将一些数据添加到数据库中。

用户使用连接注销,然后重新登录,之前存储的数据按预期存在。互联网连接可用,数据已同步到服务器。

情景#2

现在用户关闭了他/她的互联网连接。在互联网连接关闭时,向数据库添加更多数据并退出应用。

现在用户重新打开他/她的互联网连接并以与上面完全相同的方式登录应用程序。

现在用户看不到应用处于离线模式时添加的任何数据。我有setPersistenceEnabled(true),在正常情况下它可以很好地工作。

问题

问题是,当用户处于脱机模式时,持久性会失败,会向数据库添加一些数据(由于没有互联网而无法同步到服务器),并在离线模式下注销,然后再次登录

这是一个边缘案例,但我的一些用户已经面临这种情况,并且由于这个错误而丢失了他们有价值的数据。如何解决这个问题?它是Firebase数据库的默认行为吗?如果是这样,有没有解决方法呢?

1 个答案:

答案 0 :(得分:1)

通过我的应用程序,它的确如此。

来自Firebase文档 https://firebase.google.com/docs/database/android/offline-capabilities

... 如果我们的应用使用Firebase身份验证,则客户端将在重新启动时保留用户的身份验证令牌。如果在我们的应用程序脱机时auth令牌到期,客户端将暂停我们的写入操作,直到我们重新进行身份验证,否则我们的写入可能会因安全规则而失败。 ..

这意味着如果您在上线时退出了应用程序,则应用程序不会在退出之前同步您进行身份验证的条目。

只有选项不会离线注销​​。

相关问题