首页 文章

在重新连接注销后,Firebase会同步离线数据吗?

提问于
浏览
0

我有一个离线数据丢失的情况,但它似乎应该同步到服务器 .

Scenario:

用户已登录我们的Firebase应用程序 . 根据Firebase的建议打开持久性:

Database.database().isPersistenceEnabled = true

如果用户杀死应用程序并在离线时重新启动它,他/她可以继续使用该应用程序离线创建和查询数据 . 当用户重新获得网络连接时,数据将同步 . 我们对这一点很好 .

但是,如果用户在离线时退出应用程序,他/她将需要重新获得网络连接才能登录 . 此时,应用程序将获得新的身份验证令牌 . 但是,先前在离线时使用第一个登录会话/令牌保存的数据尚未同步 . 这些数据丢失了吗?或者有没有办法告诉Firebase使用先前或新令牌同步该脱机数据?

timeline of sync

tl;dr:

如何获取在注销之前离线创建的firebase数据,以便在连接后进行同步?

注意:我没有使用trasactions . 我知道重启应用程序时会丢失事务 .

1 回答

  • 2

    在Firebase的支持下,这是我学到的 . 如果您具有要求用户进行身份验证的安全规则,则以下情况属实 .

    离线收集的数据需要身份验证令牌,以便在获得连接后将数据复制回服务器 . firebase.auth() . signOut()命令会销毁令牌,因此用户的数据会丢失 .

    为了避免丢失数据,您必须阻止您的应用程序注销,或者单独存储脱机数据,并提供一种方法来使数据重新提交/同步到新身份验证令牌上的firebase .

    这是一个希望Firebase能够改进的领域 . 我的想法是Firebase应该根据用户登录时使用的令牌同步数据 . 仅仅因为用户已经注销,他/她在数据收集时登录,即使用户处于离线状态 . 我被告知这将是一个功能请求 .

相关问题