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

时间:2017-08-31 02:04:19

标签: ios firebase firebase-realtime-database synchronization

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

情境:

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

Database.database().isPersistenceEnabled = true

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

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

timeline of sync

TL; DR:

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

注意:我没有使用trasactions。我知道重启应用程序时会丢失交易。

1 个答案:

答案 0 :(得分:3)

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

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

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

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