開始使用 Android 裝置上的 Cloud Storage

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

事前準備

如果您尚未將 Firebase 新增至 Android 專案,請先完成這項作業。

建立預設 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。

將 Cloud Storage SDK 新增至應用程式

模組 (應用程式層級) Gradle 檔案 (通常是 <project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle) 中,新增 Android 適用的 Cloud Storage 程式庫的依附元件。建議您使用 Firebase Android BoM 來控管程式庫版本管理。

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:33.1.0"))

    // Add the dependency for the Cloud Storage library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage")
}

如果使用 Firebase Android BoM,應用程式就會一律使用相容的 Firebase Android 程式庫版本。

(替代方法) 新增 Firebase 程式庫依附元件,「不必」使用 BoM

如果選擇不使用 Firebase BoM,請務必在依附元件行中指定各個 Firebase 程式庫版本。

請注意,如果在應用程式中使用多個 Firebase 程式庫,強烈建議您使用 BoM 管理程式庫版本,確保所有版本都相容。

dependencies {
    // Add the dependency for the Cloud Storage library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage:21.0.0")
}
在尋找 Kotlin 專用的程式庫模組嗎?2023 年 10 月 (Firebase BoM 32.5.0) 起,Kotlin 和 Java 開發人員都可以依賴主程式庫模組 (詳情請參閱這項計畫的常見問題)。

設定 Cloud Storage

存取 Cloud Storage 值區的第一步是建立 FirebaseStorage 的執行個體:

Kotlin+KTX

storage = Firebase.storage

Java

FirebaseStorage storage = FirebaseStorage.getInstance();

您現在可以開始使用 Cloud Storage 了!

請先瞭解如何建立 Cloud Storage 參考資料

進階設定

有些用途需要額外設定:

如果您的使用者遍布世界各地,而且想要將他們的資料儲存在附近,第一個應用情況是最適合的方案。舉例來說,您可以在美國、歐洲和亞洲建立值區,分別儲存這些地區使用者的資料,縮短延遲時間。

如果您的資料有不同的存取模式,第二個應用實例會相當實用。舉例來說,您可以設定多地區或地區值區來儲存相片或其他經常存取的內容,以及 Nearline 或 Coldline 值區,以儲存使用者備份或其他不常存取的內容。

無論是哪一種用途,您都可以使用多個 Cloud Storage 值區

如果您建構應用程式 (例如 Google 雲端硬碟),這可讓使用者擁有多個已登入的帳戶 (例如個人帳戶和公司帳戶),則第三個用途非常實用。您可以使用自訂 Firebase 應用程式執行個體來驗證各個其他帳戶。

使用多個 Cloud Storage 值區

如要使用上述預設值以外的 Cloud Storage 值區,或在單一應用程式中使用多個 Cloud Storage 值區,您可以建立參照自訂值區的 FirebaseStorage 執行個體:

Kotlin+KTX

// Get a non-default Storage bucket
val storage = Firebase.storage("gs://my-custom-bucket")

Java

// Get a non-default Storage bucket
FirebaseStorage storage = FirebaseStorage.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 應用程式

如要使用自訂 FirebaseApp 建構更複雜的應用程式,可以建立透過該應用程式初始化的 FirebaseStorage 執行個體:

Kotlin+KTX

// Get the default bucket from a custom FirebaseApp
val storage = Firebase.storage(customApp!!)

// Get a non-default bucket from a custom FirebaseApp
val customStorage = Firebase.storage(customApp, "gs://my-custom-bucket")

Java

// Get the default bucket from a custom FirebaseApp
FirebaseStorage storage = FirebaseStorage.getInstance(customApp);

// Get a non-default bucket from a custom FirebaseApp
FirebaseStorage customStorage = FirebaseStorage.getInstance(customApp, "gs://my-custom-bucket");

後續步驟