開始使用 Cloud Storage for C++

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

事前準備

如要使用 Cloud Storage,您必須先完成下列步驟:

  • 註冊 C++ 專案並設定使用 Firebase。

    如果您的 C++ 專案已使用 Firebase,則表示已為 Firebase 註冊及設定。

  • Firebase C++ SDK 新增至 C++ 專案。

請注意,將 Firebase 新增至 C++ 專案時,必須同時在 Firebase 主控台和您開啟的 C++ 專案中執行任務 (例如,從主控台下載 Firebase 設定檔,然後將其移至 C++ 專案)。

此外,請確認您的 Firebase 專案採用即付即用的 Blaze 定價方案。如果您是 Firebase 和 Google Cloud 的新手,請確認您是否符合 $300 美元的抵免額資格。

建立預設的 Cloud Storage 值區

  1. Firebase 控制台的導覽窗格中,選取「Storage」(儲存空間)

    如果您的專案尚未採用 Blaze 付費方案,系統會提示您升級專案。

  2. 按一下「開始使用」

  3. 選取預設值區的位置

  4. 為預設值區設定 Firebase Security Rules。開發期間,建議您設定公開存取權規則

  5. 按一下「完成」

您現在可以在 Firebase 主控台的 Cloud Storage「Files」分頁中查看 bucket。預設值區名稱格式為 PROJECT_ID.firebasestorage.app

設定公開存取權

Cloud Storage for Firebase 提供宣告式規則語言,可讓您定義資料的結構、索引方式,以及資料可讀取及寫入的時機。根據預設,系統會限制 Cloud Storage 的讀取和寫入存取權,因此只有經過驗證的使用者才能讀取或寫入資料。如要開始使用,無須設定 Authentication,您可以設定公開存取權規則

這會讓 Cloud Storage 對所有人開放,甚至是未使用您應用程式的使用者,因此請務必在設定驗證時再次限制 Cloud Storage

建立並初始化 firebase::App

您必須先建立並初始化 firebase::App,才能存取 Cloud Storage

納入 firebase::App 的標頭檔案:

#include "firebase/app.h"

Android

建立 firebase::App,並傳遞 JNI 環境和 jobject 參照至 Java 活動做為引數:

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 參照

進階設定

以下幾種用途需要額外設定:

如果您的使用者遍布全球,且希望將資料儲存在使用者附近的位置,第一種用途就非常適合。舉例來說,您可以在美國、歐洲和亞洲建立資料集,以便為這些地區的使用者儲存資料,進而縮短延遲時間。

如果資料擁有不同的存取模式,第二個用途就十分有用。舉例來說,您可以設定多區域或區域值區,用於儲存相片或其他經常存取的內容,以及 Nearline 或 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 時,您必須授予 Firebase 使用 Google Cloud SDK 中的 gsutil 工具存取這些檔案的權限:

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://BUCKET_NAME

您可以按照 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");

後續步驟