開始在 Apple 平台上使用 Cloud Storage

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

事前準備

  1. 如果尚未完成 Apple 平台應用程式入門指南,請務必先完成。包括:

    • 建立 Firebase 專案。

    • 在專案中註冊 Apple 平台應用程式,並將 Firebase 程式庫和 Firebase 設定檔 (GoogleService-Info.plist) 新增至應用程式,將應用程式連結至 Firebase。

  2. 請確認 Firebase 專案採用即付即用 Blaze 定價方案,這是使用 Cloud Storage for Firebase 的必要條件。如果您剛開始使用 Firebase 和 Google Cloud,請確認是否符合 $300 美元免費試用抵免額的資格。

建立預設 Cloud Storage bucket

  1. 在 Firebase 控制台中,依序前往「Databases & Storage」(資料庫和儲存空間) >「Storage」(儲存空間)。

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

  2. 按一下「開始使用」。

  3. 選取預設 bucket 的位置。

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

  5. 按一下「完成」。

現在,您可以在 Firebase 控制台中查看 bucket (依序前往「Databases & Storage」(資料庫和儲存空間) >「Storage」(儲存空間) >「Files」(檔案) 分頁)。預設 bucket 名稱格式為 PROJECT_ID.firebasestorage.app。

設定公開存取權

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

這會讓 Cloud Storage 開放給所有人,包括未使用應用程式的使用者,因此請務必在設定驗證時再次限制 Cloud Storage。

在應用程式中新增 Cloud Storage

使用 Swift Package Manager 安裝及管理 Firebase 依附元件。

  1. 在 Xcode 中保持開啟應用程式專案,然後依序點選「File」(檔案) 和「Add Packages」(新增 Package)。
  2. 系統提示時,請新增 Firebase Apple 平台 SDK 存放區:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. 選擇 Cloud Storage 程式庫。
  5. 在目標建構設定的「Other Linker Flags」部分,新增 -ObjC 標記。
  6. 完成後,Xcode 會自動開始在背景解析及下載依附元件。

在應用程式中設定 Cloud Storage

  1. 請先初始化 Firebase,再建立或使用任何 Firebase 參照。

    如果您已設定其他 Firebase 產品,可能已完成這項操作,但請務必將 FirebaseStorage 程式庫新增至匯入清單。

    1. 在 UIApplicationDelegate 中匯入 FirebaseCore 模組和 FirebaseStorage 模組。我們也建議新增 FirebaseAuth。

      SwiftUI

      import SwiftUI
      import FirebaseCore
      import FirebaseStorage
      import FirebaseAuth
      // ...
      

      Swift

      import FirebaseCore
      import FirebaseStorage
      import FirebaseAuth
      // ...
      

      Objective-C

      @import FirebaseCore;
      @import FirebaseStorage;
      @import FirebaseAuth;
      // ...
      
    2. 在應用程式委派的 application(_:didFinishLaunchingWithOptions:) 方法中,設定 FirebaseApp 共用例項:

      SwiftUI

      // Use Firebase library to configure APIs
      FirebaseApp.configure()
      

      Swift

      // Use Firebase library to configure APIs
      FirebaseApp.configure()
      

      Objective-C

      // Use Firebase library to configure APIs
      [FIRApp configure];
      
    3. (僅限 SwiftUI) 建立應用程式委派,並使用 UIApplicationDelegateAdaptor 或 NSApplicationDelegateAdaptor 將其附加至 App 結構體。您也必須停用應用程式委派物件調配。詳情請參閱 SwiftUI 操作說明。

      SwiftUI

      @main
      struct YourApp: App {
        // Register app delegate for Firebase setup
        @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
      
        var body: some Scene {
          WindowGroup {
            NavigationView {
              ContentView()
            }
          }
        }
      }
      
  2. 使用預設 Firebase 應用程式,取得 Cloud Storage 服務的參照。

    1. 請確認應用程式程式碼集中的 Firebase 設定檔 (GoogleService-Info.plist) 已更新為預設 Cloud Storage bucket 的名稱。

      1. 取得更新後的設定檔。

      2. 使用下載的設定檔,取代 Xcode 專案根目錄中現有的 GoogleService-Info.plist 檔案。如果系統提示,請選取將設定檔新增至所有目標。

        請確認應用程式中只有這個最新下載的設定檔,且檔案名稱未附加額外字元,例如 (2)。

    2. 使用預設 Firebase 應用程式,取得 Cloud Storage 服務的參照:

      Swift

      let storage = Storage.storage()
      // Alternatively, explicitly specify the bucket name URL.
      storage = Storage.storage(url:"gs://BUCKET_NAME")

      Objective-C

      FIRStorage *storage = [FIRStorage storage];
      // Alternatively, explicitly specify the bucket name URL.
      // FIRStorage storage = [FIRStorage storageWithURL:@"gs://BUCKET_NAME"];

你可以開始使用「Cloud Storage」了!

下一步?瞭解如何建立 Cloud Storage 參照。

進階設定

有幾種用途需要額外設定:

如果您的使用者遍布全球,且您想將他們的資料儲存在鄰近位置,第一個用途就非常適合。舉例來說,您可以在美國、歐洲和亞洲建立 bucket,儲存這些區域使用者的資料,以降低延遲時間。

如果資料有不同的存取模式,第二種用途就很有幫助。例如,您可以設定多區域或區域型 bucket,用來儲存圖片或其他經常存取的內容,並設定 Nearline 或 Coldline bucket,用來儲存使用者備份或其他不常存取的內容。

無論是哪種用途,都建議使用多個 Cloud Storage 值區。

如果您正在建構應用程式 (例如 Google 雲端硬碟),可讓使用者登入多個帳戶 (例如個人帳戶和工作帳戶),則第三個用途會很有幫助。您可以使用自訂 Firebase 應用程式執行個體,驗證每個額外帳戶。

使用多個 Cloud Storage bucket

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

Swift

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

Objective-C

// Get a non-default Cloud Storage bucket
FIRStorage storage = [FIRStorage storageWithURL:@"gs://my-custom-bucket"];
    

使用匯入的值區

將現有的 Cloud Storage bucket 匯入 Firebase 時,您必須使用 Google Cloud SDK 隨附的 gsutil 工具,授予 Firebase 存取這些檔案的權限:

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

如要瞭解如何查看專案編號,請參閱 Firebase 專案簡介。

這不會影響新建立的值區,因為這些值區的預設存取控管設定會允許 Firebase。這項臨時措施日後會自動執行。

使用自訂 Firebase 應用程式

如果您使用自訂 FirebaseApp 建構更複雜的應用程式,可以建立以該應用程式初始化的 Storage 例項:

Swift

// Get the default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp)

// Get a non-default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp, url:"gs://my-custom-bucket")
    

Objective-C

// Get the default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp];

// Get a non-default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp withURL:@"gs://my-custom-bucket"];
    

後續步驟