Cloud Storage for Firebase 可讓您上傳及分享使用者原創內容,例如圖片和影片,讓您在應用程式中建立多媒體內容。您的資料會儲存在 Google Cloud Storage 值區中,這是具備高可用性和全球備援機制的千億位元組規模物件儲存空間解決方案。Cloud Storage for Firebase 可讓您直接透過行動裝置和網頁瀏覽器安全上傳這些檔案,輕鬆處理網路不穩定的問題。
事前準備
如果尚未完成,請務必參閱 Apple 平台應用程式入門指南。包括:
正在建立 Firebase 專案,
將 Apple 平台應用程式註冊至專案,並將 Firebase 程式庫和 Firebase 設定檔 (
GoogleService-Info.plist
) 新增至應用程式,藉此將應用程式連結至 Firebase。
請確認您的 Firebase 專案採用即付即用的 Blaze 定價方案。如果您是 Firebase 和 Google Cloud 的新手,請確認您是否符合領取 $300 美元抵免額的資格。
建立預設 Cloud Storage 值區
在 Firebase 控制台的導覽窗格中,選取「儲存空間」。
如果您的專案尚未採用 Blaze 付費方案,系統會提示您升級專案。
按一下「開始使用」。
選取預設值區的位置。
、US-CENTRAL1
和US-EAST1
中的值區可利用 Google Cloud Storage 的「一律免費」級別。所有其他地區的桶分別採用 Google Cloud Storage 的價格和用量。US-WEST1
如有需要,您之後可以建立多個分類,每個分類都有各自的位置。
為預設值區設定 Firebase Security Rules。開發期間,建議您設定公開存取權規則。
按一下「完成」。
您現在可以前往 Firebase 控制台的 Cloud Storage「Files」分頁查看值區。您的預設值區名稱格式為 PROJECT_ID.firebasestorage.app
設定公開存取權
Cloud Storage for Firebase 提供宣告式規則語言,可讓您定義資料的結構、索引方式,以及資料可讀取及寫入的時機。根據預設,系統會限制 Cloud Storage 的讀取和寫入存取權,因此只有經過驗證的使用者才能讀取或寫入資料。如要在不設定 Authentication 的情況下開始使用,您可以設定公開存取權的規則。
這會讓 Cloud Storage 對所有人開放,甚至是未使用您應用程式的使用者,因此請務必在設定驗證時再次限制 Cloud Storage。
在應用程式中新增 Cloud Storage
使用 Swift Package Manager 安裝及管理 Firebase 依附元件。
- 在 Xcode 中保持開啟應用程式專案,然後依序點選「File」>「Add Packages」。
- 系統顯示提示訊息時,請新增 Firebase Apple 平台 SDK 存放區:
- 選擇 Cloud Storage 程式庫。
- 在目標建構設定的「Other Linker Flags」部分中新增
-ObjC
標記。 - 完成後,Xcode 就會自動開始在背景中解析並下載依附元件。
https://github.com/firebase/firebase-ios-sdk.git
在應用程式中設定 Cloud Storage
在建立或使用任何 Firebase 參照資料之前,請先初始化 Firebase。
如果您已設定其他 Firebase 產品,可能已完成這項操作,但請務必將
FirebaseStorage
程式庫新增至匯入清單。在
UIApplicationDelegate
中匯入FirebaseCore
模組和FirebaseStorage
模組。我們也建議您新增FirebaseAuth
。SwiftUI
import SwiftUI import FirebaseCore import FirebaseStorage import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseStorage import FirebaseAuth // ...
目標-C
@import FirebaseCore; @import FirebaseStorage; @import FirebaseAuth; // ...
在應用程式委派作業的
application(_:didFinishLaunchingWithOptions:)
方法中,設定FirebaseApp
共用例項:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
目標-C
// Use Firebase library to configure APIs [FIRApp configure];
(僅限 SwiftUI) 建立應用程式委派,並使用
UIApplicationDelegateAdaptor
或NSApplicationDelegateAdaptor
將其附加至App
結構體。您也必須停用應用程式委派程式 swizzling。詳情請參閱 SwiftUI 操作說明。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 服務的參照。
請確認應用程式程式碼集中的 Firebase 設定檔 (
GoogleService-Info.plist
) 已更新為預設 Cloud Storage 桶。使用這個下載的設定檔取代 Xcode 專案根目錄中的現有
GoogleService-Info.plist
檔案。畫面出現提示時,請選取將設定檔新增至所有目標。請確認應用程式中只有這個最近下載的設定檔,且其檔案名稱沒有附加額外的字元,例如
(2)
。
使用預設的 Firebase 應用程式,取得 Cloud Storage 服務的參照:
Swift
let storage = Storage.storage()
// Alternatively, explicitly specify the bucket name URL. storage = Storage.storage(url:"gs://BUCKET_NAME")
目標-C
FIRStorage *storage = [FIRStorage storage];
// Alternatively, explicitly specify the bucket name URL. // FIRStorage storage = [FIRStorage storageWithURL:@"gs://BUCKET_NAME"];
您可以開始使用 Cloud Storage 了!
下一步?瞭解如何建立 Cloud Storage 參照。
進階設定
以下幾種用途需要額外設定:
如果您的使用者遍布全球,且希望將資料儲存在使用者附近的位置,第一種用途就非常適合。舉例來說,您可以在美國、歐洲和亞洲建立資料集,以便為這些地區的使用者儲存資料,進而縮短延遲時間。
如果您有不同存取模式的資料,第二個用途就很實用。舉例來說,您可以設定多區域或區域值區,用於儲存相片或其他經常存取的內容,以及 Nearline 或 Coldline 值區,用於儲存使用者備份或其他不常存取的內容。
無論是哪種用途,都建議使用多個 Cloud Storage 值區塊。
第三種用途是建構應用程式 (例如 Google 雲端硬碟),讓使用者擁有多個帳戶登入 (例如個人帳戶和公司帳戶) 時。您可以使用自訂 Firebase 應用程式執行個體來驗證其他帳戶。
使用多個 Cloud Storage 值區
如果您想使用上述預設值以外的 Cloud Storage 值區,或是在單一應用程式中使用多個 Cloud Storage 值區,您可以建立參照自訂值區的 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 值區匯入 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"];
後續步驟
準備推出應用程式:
啟用 App Check,確保只有您的應用程式可以存取儲存空間值區。
在 Google Cloud 控制台中為專案設定預算快訊。
請在 Firebase 控制台中監控使用量和帳單資訊主頁,全面掌握專案在多項 Firebase 服務中的用量。如要進一步瞭解使用資訊,您也可以造訪 Cloud Storage「Usage」資訊主頁。
詳閱 Firebase 上市檢查清單。