Firebase 离线数据库

Firebase offline database

我的应用程序有一个使用 firebase 存储和更新数据的目录。如果应用程序在没有在线的情况下被终止并重新启动,我想显示已经缓存的数据。

当应用被杀死时,firebase 是否会删除缓存?

可不可以不管用户在线离线先推送离线数据

只要您启用离线模式,数据就会缓存到磁盘,因此即使在应用程序被杀死后也可以使用。然后,当您再次在同一路径上收听时,将检索数据,即使用户离线也是如此。

对于实时数据库(我假设这就是您所说的),持久性可用于 Android 和 iOS。 Web 没有离线持久性。

在 Android:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

在 iOS 上:

Database.database().isPersistenceEnabled = true

根据我在 Slack Firebase 社区上的回答:

数据库上的 setPersistenceEnabled(true) 必须是您在使用任何引用调用数据之前要做的第一件事。在你调用它之前你的 fetchData() 方法 运行s 所以设置持久性将失败。您可以像这样检查设置持久性是否成功:

bool _success = await globals.firebaseDatabase.setPersistenceEnabled(true);

你还应该 运行 在设置持久性之后这样做:

_success =
        await globals.firebaseDatabase.setPersistenceCacheSizeBytes(10000000);

创建数据库实例和设置持久性需要在应用程序中尽早完成……最好回到 main.dart。 (已编辑)

热重载时,success 布尔值会显示为 false,但这是因为持久化只能成功设置一次,并且是在应用程序最初加载时完成的。 (已编辑)

希望能解决您的问题。

keepSynced(true/false) 然后可以用于数据库的特定位以确保特定引用始终是最新的。您可以根据需要打开和关闭它。 keepSynced 基本上只是添加一个监听器。如果您已经在为数据库的这些区域创建侦听器,则不需要 keepSynced。 (已编辑)

ps。上面代码中的 'globals' 只是对我的 global_config.dart 文件的引用。