Cloud Storage for Firebase 可讓您上傳和分享用戶生成的內容,例如圖像和視頻,從而允許您在應用程式中建立富媒體內容。您的資料儲存在Google Cloud Storage 儲存桶中,這是一個具有高可用性和全域冗餘的 EB 級物件儲存解決方案。 Cloud Storage for Firebase 可讓您直接從行動裝置和 Web 瀏覽器安全地上傳這些文件,輕鬆處理不穩定的網路。
先決條件
- 安裝 Firebase SDK 。
- 將您的應用程式新增至Firebase 控制台中的 Firebase 專案。
建立預設 Cloud Storage 儲存分區
從Firebase 控制台的導覽窗格中,選擇「儲存」 ,然後按一下「開始」 。
查看有關使用安全規則保護 Cloud Storage 資料的訊息。在開發過程中,請考慮設定公共存取規則。
選擇預設 Cloud Storage 儲存分區的位置。
此位置設定是您專案的預設 Google Cloud Platform (GCP) 資源位置。請注意,此位置將用於專案中需要位置設定的 GCP 服務,特別是Cloud Firestore資料庫和App Engine應用程式(如果您使用 Cloud Scheduler,則需要)。
如果您無法選擇位置,則您的專案已有預設 GCP 資源位置。它是在專案建立期間或設定另一個需要位置設定的服務時設定的。
按一下“完成” 。
設定公共訪問
Cloud Storage for Firebase 提供了一種宣告式規則語言,可讓您定義資料的結構方式、索引方式以及資料的讀取和寫入時間。預設情況下,對 Cloud Storage 的讀寫存取受到限制,因此只有經過身份驗證的使用者才能讀取或寫入資料。若要在不設定身份驗證的情況下開始,您可以設定公共存取規則。
這確實使雲端儲存向任何人開放,甚至是不使用您的應用程式的人,因此請務必在設定身份驗證時再次限制您的雲端儲存。
將雲端儲存新增至您的應用程式
使用 Swift Package Manager 安裝和管理 Firebase 相依性。
- 在 Xcode 中,開啟應用程式項目,導覽至File > Add Packages 。
- 出現提示時,新增 Firebase Apple 平台 SDK 儲存庫:
- 選擇雲端儲存庫。
- 將
-ObjC
標誌新增至目標建置設定的「其他連結器標誌」部分。 - 完成後,Xcode 將自動開始在背景解析並下載您的依賴項。
https://github.com/firebase/firebase-ios-sdk.git
設定雲端儲存
您必須在建立或使用任何 Firebase 參考之前初始化 Firebase。如果您已對其他 Firebase 功能執行此操作,則可以跳過此步驟。
- 在
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; // ...
- 在應用程式委託的
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];
- 如果您使用 SwiftUI,則必須建立應用程式委託並透過
UIApplicationDelegateAdaptor
或NSApplicationDelegateAdaptor
將其附加到您的App
結構。您還必須停用應用程式委託調配。有關更多信息,請參閱SwiftUI 說明。斯威夫特使用者介面
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- 使用預設的 Firebase 應用程式取得 Cloud Storage 服務的參考:
迅速
let storage = Storage.storage()
Objective-C
FIRStorage *storage = [FIRStorage 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"];
下一步
準備啟動您的應用程式:
啟用應用程式檢查有助於確保只有您的應用程式可以存取您的儲存桶。
在 Google Cloud Console 中為您的專案設定預算提醒。
監控 Firebase 控制台中的使用情況和計費資訊中心,全面了解專案在多個 Firebase 服務中的使用情況。您也可以存取雲端儲存使用儀表板以取得更詳細的使用資訊。