我有一个离线数据丢失的场景,但它似乎应该与服务器同步。
场景:
用户登录到我们的Firebase应用程序中。按照Firebase的建议,持久性是打开的:
Database.database().isPersistenceEnabled = true如果用户在脱机时杀死应用程序并重新启动它,他/她可以继续使用该应用程序创建和查询脱机数据。当用户恢复网络连接时,数据将同步。我们在这一点上很好。
但是,如果用户在离线时退出应用程序,他/她将需要重新获得网络连接才能登录。届时,应用程序将获得一个新的身份验证令牌。但是,以前在脱机时与第一个登录会话/令牌一起保存的数据还没有同步。数据丢失了吗?或者是否有一种方法可以告诉Firebase使用以前的或新的令牌来同步离线数据?

tl;dr:
如何获得在注销之前脱机创建的firebase数据,以便在有连接时进行同步?
注:我不使用交易。我知道事务会在重新启动应用程序时丢失。
发布于 2017-09-05 17:01:18
在与Firebase的支持一起工作之后,我学到了这一点。如果您有需要对用户进行身份验证的安全规则,则如下所示。
脱机收集的数据需要身份验证令牌,以便在获得连接后将数据复制回服务器。firebase.auth().signOut()命令销毁令牌,因此用户的数据丢失。
为了避免丢失数据,您必须阻止应用程序注销,或者单独存储脱机数据,并提供一种方法使该数据在新的身份验证令牌上重新提交/同步到firebase。
这是一个充满希望的领域,Firebase将得到改善。我的想法是,Firebase应该基于用户仍然登录时使用的令牌同步数据。仅仅因为用户已注销,他/她在数据收集时就已登录,即使该用户离线。我被告知这将是一个特征请求。
https://stackoverflow.com/questions/45972143
复制相似问题