開始在 Android 上使用 Cloud Storage

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

事前準備

如果還沒試過 將 Firebase 新增至您的 Android 專案

建立預設 Cloud Storage 值區

  1. Firebase 控制台的導覽窗格中,選取「Storage」(儲存空間)。 然後按一下「開始使用」

  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」受到限制,因此只有已驗證的使用者才能讀取或寫入 資料。如要開始使用,但不想設定 Authentication,您可以設定公開存取權規則

這會讓「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.4.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.1")
}
想尋找 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 時,您必須授予 Firebase 使用 Google Cloud SDK 中的 gsutil 工具存取這些檔案的權限:

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

後續步驟