首页 文章

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

提问于
浏览
4

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

SCENARIO #1

用户使用 internet connection on 登录应用程序(Firebase身份验证),并将一些数据添加到数据库 .

用户使用 internet connection on 注销,然后再次登录,之前存储的数据按预期存在 . 互联网连接可用,数据已同步到服务器 .

SCENARIO #2

现在用户关闭了他/她的互联网连接 . 在 the internet connection is off 时,向数据库添加更多数据并从应用程序中注销 .

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

现在 the user does not see any data that was added while the app was in offline mode . 我有 setPersistenceEnabled(true) ,它在正常情况下完美运行 .

The Problem

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

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

1 回答

  • 1

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

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

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

    这意味着如果您在联机时退出应用程序,则应用程序不会同步您在注销之前进行身份验证的条目 .

    只有选项不会离线注销 .

相关问题