開始在 Apple 平台上使用雲端存儲

Cloud Storage for Firebase 可讓您上傳和分享用戶生成的內容,例如圖像和視頻,從而允許您在應用程式中建立富媒體內容。您的資料儲存在Google Cloud Storage 儲存桶中,這是一個具有高可用性和全域冗餘的 EB 級物件儲存解決方案。 Cloud Storage for Firebase 可讓您直接從行動裝置和 Web 瀏覽器安全地上傳這些文件,輕鬆處理不穩定的網路。

先決條件

  1. 安裝 Firebase SDK
  2. 將您的應用程式新增至Firebase 控制台中的 Firebase 專案。

建立預設 Cloud Storage 儲存分區

  1. Firebase 控制台的導覽窗格中,選擇「儲存」 ,然後按一下「開始」

  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 的讀寫存取受到限制,因此只有經過身份驗證的使用者才能讀取或寫入資料。若要在不設定身份驗證的情況下開始,您可以設定公共存取規則

這確實使雲端儲存向任何人開放,甚至是不使用您的應用程式的人,因此請務必在設定身份驗證時再次限制您的雲端儲存。

將雲端儲存新增至您的應用程式

使用 Swift Package Manager 安裝和管理 Firebase 相依性。

  1. 在 Xcode 中,開啟應用程式項目,導覽至File > Add Packages
  2. 出現提示時,新增 Firebase Apple 平台 SDK 儲存庫:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. 選擇雲端儲存庫。
  5. -ObjC標誌新增至目標建置設定的「其他連結器標誌」部分。
  6. 完成後,Xcode 將自動開始在背景解析並下載您的依賴項。

設定雲端儲存

您必須在建立或使用任何 Firebase 參考之前初始化 Firebase。如果您已對其他 Firebase 功能執行此操作,則可以跳過此步驟。

  1. UIApplicationDelegate中導入FirebaseCore模組,以及應用程式委託使用的任何其他Firebase 模組。例如,要使用 Cloud Firestore 和身份驗證:

    斯威夫特使用者介面

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    迅速

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. 在應用程式委託的application(_:didFinishLaunchingWithOptions:)方法中設定FirebaseApp共享實例:

    斯威夫特使用者介面

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

    迅速

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. 如果您使用 SwiftUI,則必須建立應用程式委託並透過UIApplicationDelegateAdaptorNSApplicationDelegateAdaptor將其附加到您的App結構。您還必須停用應用程式委託調配。有關更多信息,請參閱SwiftUI 說明

    斯威夫特使用者介面

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

    迅速

    let storage = Storage.storage()
    

    Objective-C

    FIRStorage *storage = [FIRStorage storage];
    

您已準備好開始使用雲端儲存!

首先,我們來學習如何建立 Cloud Storage 參考

進階設定

有一些用例需要額外的設定:

  • 多個地理區域使用 Cloud Storage 儲存分區
  • 不同儲存類別中使用 Cloud Storage 儲存分區
  • 在同一應用程式中對多個經過驗證的使用者使用 Cloud Storage 儲存桶

如果您的用戶遍布世界各地,並且希望將他們的資料儲存在他們附近,那麼第一個用例是完美的。例如,您可以在美國、歐洲和亞洲建立儲存桶來儲存這些地區用戶的數據,以減少延遲。

如果您的資料具有不同的存取模式,第二個用例會很有幫助。例如:您可以設定一個多區域或區域儲存桶來儲存圖片或其他經常存取的內容,以及一個近線或冷線儲存桶來儲存使用者備份或其他不經常存取的內容。

在這兩種用例中,您都需要使用多個 Cloud Storage 儲存桶

如果您正在建立應用程式(例如 Google Drive),第三個用例非常有用,它允許使用者擁有多個登入帳戶(例如,個人帳戶和工作帳戶)。您可以使用自訂 Firebase 應用程式實例對每個附加帳戶進行驗證。

使用多個 Cloud Storage 儲存桶

如果您想要使用上面提供的預設儲存桶以外的 Cloud Storage 儲存桶,或在單一應用程式中使用多個 Cloud Storage 儲存桶,您可以建立一個引用您的自訂儲存桶的FIRStorage實例:

迅速

// 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 儲存桶匯入 Firebase 時,您必須授予 Firebase 使用gsutil工具(包含在Google Cloud SDK中)存取這些檔案的能力:

gsutil -m acl ch -r -u service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

您可以按照Firebase 專案簡介中的說明找到您的專案編號。

這不會影響新建立的儲存桶,因為這些儲存桶的預設存取控制設定為允許 Firebase。這是一項臨時措施,將來會自動執行。

使用自訂 Firebase 應用

如果您正在使用自訂FirebaseApp建立更複雜的應用程序,則可以建立使用該應用程式初始化的Storage實例:

迅速

// 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"];
    

下一步