如何将文件从 firebase 存储同步到应用程序的资产文件夹?

How to synchronize files from firebase storage to app's assets folder?

对 flutter 和 firebase 还是个新手。我了解如何存储和检索图像并将其显示在应用程序上。

但是我该如何将文件从应用程序的本地资产文件夹同步到存储在 firebase 存储中的资产文件夹?我的目的是检查云文件夹是否最近上传了像图标这样的新图像,并将其下载到应用程序的本地文件夹。如果在云存储中删除了一个文件,它也应该从本地资产文件夹中删除它,镜像它。

我需要一种方法来将本地 AssetManifest.json 与 firebase 存储上的进行比较。我只需要一点 direction/algorithm 就可以开始了。感谢您的帮助!

Cloud Storage 的 Firebase SDK 中没有为此专门构建任何内容,因此您必须在自己的应用程序代码中构建它。


只使用 Firebase 的云存储API

如果您只是使用云存储,则必须:

  1. List all files 您对存储感兴趣。
  2. 遍历文件。
  3. Get the metadata for each file and check then the files was last updated
  4. 将其与您编写本地文件时进行比较。
  5. Download the file 如果是新的或修改过的。

这种方法可行,但它需要多次调用存储 API,因为没有特定的 API 可以为您提供自特定 date/time 以来修改过的文件。


在云数据库中存储元数据

您还可以考虑将元数据存储在云数据库中,例如 Firebase 的实时数据库或 Cloud Firestore,然后使用该数据库的查询功能仅检索自您的设备上次同步以来修改过的文件。

然后食谱变成:

  1. 确定我们上次同步的时间,这是您要存储在本地 storage/shared 首选项中的值。
  2. 对数据库执行查询以确定从那时起哪些文件是 added/modified。
  3. 遍历查询结果并...
  4. 下载修改过的每个文件。

在这里,只有第 2 步和第 4 步调用外部 APIs,因此执行起来可能更快、成本更低(但您最初需要做更多的工作)。