获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

开始使用适用于 C++ 的 Cloud Storage

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

Cloud Storage for Firebase 让您可以上传和共享用户生成的内容,例如图像和视频,从而让您可以在应用中构建富媒体内容。您的数据存储在Google Cloud Storage 存储桶中——一种具有高可用性和全局冗余的 EB 级对象存储解决方案。 Cloud Storage for Firebase 让您可以直接从移动设备和 Web 浏览器安全地上传这些文件,轻松处理不稳定的网络。

在你开始之前

在使用Cloud Storage之前,您需要:

  • 注册您的 C++ 项目并将其配置为使用 Firebase。

    如果您的 C++ 项目已经使用 Firebase,那么它已经针对 Firebase 进行了注册和配置。

  • Firebase C++ SDK添加到您的 C++ 项目。

请注意,将 Firebase 添加到您的 C++ 项目涉及Firebase 控制台和您打开的 C++ 项目中的任务(例如,您从控制台下载 Firebase 配置文件,然后将它们移动到您的 C++ 项目中)。

创建默认 Cloud Storage 存储分区

  1. Firebase 控制台的导航窗格中,选择Storage ,然后单击Get started

  2. 查看有关使用安全规则保护您的 Cloud Storage 数据的消息。在开发过程中,考虑设置公共访问规则

  3. 为您的默认 Cloud Storage 存储桶选择一个位置

    • 此位置设置是您项目的默认 Google Cloud Platform (GCP) 资源位置。请注意,此位置将用于项目中需要位置设置的 GCP 服务,特别是您的Cloud Firestore数据库和App Engine应用程序(如果您使用 Cloud Scheduler,则需要)。

    • 如果您无法选择位置,则您的项目已经具有默认的 GCP 资源位置。它是在项目创建期间或在设置需要位置设置的其他服务时设置的。

    如果您使用的是 Blaze 计划,则可以创建多个存储桶,每个存储桶都有自己的位置

  4. 单击完成

设置公共访问

Cloud Storage for Firebase 提供了一种声明性规则语言,允许您定义数据的结构、索引方式以及何时可以读取和写入数据。默认情况下,对 Cloud Storage 的读写访问受到限制,因此只有经过身份验证的用户才能读取或写入数据。要在不设置身份验证的情况下开始,您可以配置公共访问规则

这确实使云存储对任何人开放,甚至是不使用您的应用程序的人,因此请务必在设置身份验证时再次限制您的云存储。

创建并初始化firebase::App

在访问 Cloud Storage 之前,您需要创建并初始化firebase::App

包括firebase::App的头文件:

#include "firebase/app.h"

安卓

创建firebase::App ,将 JNI 环境和对 Java Activity 的jobject引用作为参数传递:

app = App::Create(AppOptions(), jni_env, activity);

iOS+

创建firebase::App

app = App::Create(AppOptions());

访问firebase::storage::Storage

firebase::storage::Storage类是 Cloud Storage C++ SDK 的入口点。

Storage* storage = Storage::GetInstance(app);

您可以开始使用 Cloud Storage 了!

首先,让我们了解如何创建 Cloud Storage 引用

高级设置

有一些用例需要额外的设置:

  • 多个地理区域使用 Cloud Storage 存储桶
  • 不同的存储类别中使用 Cloud Storage 存储桶
  • 在同一应用中将 Cloud Storage 存储桶与多个经过身份验证的用户一起使用

如果您的用户遍布世界各地,并且希望将他们的数据存储在他们附近,那么第一个用例是完美的。例如,您可以在美国、欧洲和亚洲创建存储桶,为这些地区的用户存储数据以减少延迟。

如果您的数据具有不同的访问模式,则第二个用例会很有帮助。例如:您可以设置一个多区域或区域存储桶来存储图片或其他经常访问的内容,以及一个近线或冷线存储桶来存储用户备份或其他不经常访问的内容。

在这两种用例中的任何一种情况下,您都需要使用多个 Cloud Storage 存储桶

如果您正在构建一个应用程序(如 Google Drive),第三个用例很有用,它允许用户拥有多个登录帐户(例如,个人帐户和工作帐户)。您可以使用自定义 Firebase 应用程序实例来验证每个额外的帐户。

使用多个 Cloud Storage 存储桶

如果您想使用除上面提供的默认值之外的 Cloud Storage 存储桶,或在单个应用程序中使用多个 Cloud Storage 存储桶,您可以创建一个引用您的自定义存储桶的firebase::storage::Storage实例:

// Get a non-default Cloud Storage bucket
Storage* storage = Storage::GetInstance("gs://my-custom-bucket");

使用导入的桶

将现有的 Cloud Storage 存储桶导入 Firebase 时,您必须授予 Firebase 使用gsutil工具访问这些文件的能力,该工具包含在Google Cloud SDK中:

gsutil -m acl ch -r -u service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

您可以按照 Firebase 项目简介中的说明找到您的项目编号。

这不会影响新创建的存储桶,因为这些存储桶的默认访问控制设置为允许 Firebase。这是一项临时措施,将来会自动执行。

使用自定义 Firebase 应用

如果您正在使用自定义firebase::App构建更复杂的应用程序,您可以创建一个使用该应用程序初始化的firebase::storage::Storage实例:

// Get the default bucket from a custom firebase::App
Storage* storage = Storage::GetInstance(customApp);

// Get a non-default bucket from a custom firebase::App
Storage* storage = Storage::GetInstance(customApp, "gs://my-custom-bucket");

下一步