開始使用 Cloud Storage for C++

Cloud Storage for Firebase 可讓您上傳及分享使用者原創內容 (例如圖片和影片),進而在應用程式中建構互動式多媒體內容。您的資料會儲存在 Google Cloud Storage 值區。這是 EB 規模的物件儲存解決方案,具備高可用性和全球備援功能。Cloud Storage for Firebase 可讓您直接從行動裝置和網路瀏覽器安全上傳這些檔案,輕鬆處理不穩的網路。

事前準備

使用 Cloud Storage 之前,您必須先:

  • 註冊 C++ 專案,並將其設為使用 Firebase。

    如果您的 C++ 專案已使用 Firebase,則專案已針對 Firebase 完成註冊並完成相關設定。

  • 在 C++ 專案中新增 Firebase C++ SDK

請注意,將 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 的讀取和寫入存取權會受到限制,因此只有通過驗證的使用者才能讀取或寫入資料。如要在不設定驗證的情況下開始使用,您可以設定公開存取的規則

這會導致任何人都能使用 Cloud Storage,即使是未使用應用程式的人也不例外,因此設定驗證時,請務必再次限制 Cloud Storage。

建立並初始化 firebase::App

存取 Cloud Storage 之前,您需要建立並初始化 firebase::App

包含 firebase::App 的標頭檔案:

#include "firebase/app.h"

Android

建立 firebase::App,將 JNI 環境和 jobject 參照做為引數傳遞給 Java Activity:

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 參考資料

進階設定

以下列舉幾個需要額外設定的用途:

如果您的使用者遍布世界各地,並想將他們的資料儲存在鄰近位置,第一種使用情境會是最理想的做法。舉例來說,您可以建立美國、歐洲和亞洲的值區,為這些地區的使用者儲存資料以縮短延遲時間。

如果資料擁有不同的存取模式,第二個用途就十分有用。例如:您可以設定多地區或地區值區來儲存相片或其他經常存取的內容,以及設定近線或 Coldline 值區,儲存使用者備份或其他不常存取的內容。

在這些用途中,建議您使用多個 Cloud Storage 值區

第三種用途是建構應用程式 (例如 Google 雲端硬碟),讓使用者擁有多個帳戶登入 (例如個人帳戶和公司帳戶) 時。您可以使用自訂 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 時,您必須使用 Google Cloud SDK 所提供的 gsutil 工具,授予 Firebase 存取這些檔案的權限:

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");

後續步驟