Cloud Storage for Firebase 可讓您上傳和共享用戶生成的內容,例如圖片和視頻,從而讓您可以將富媒體內容構建到您的應用中。您的數據存儲在Google Cloud Storage 存儲桶中——一種具有高可用性和全局冗餘的 EB 級對象存儲解決方案。 Cloud Storage for Firebase 讓您可以直接從移動設備和網絡瀏覽器安全地上傳這些文件,輕鬆處理不穩定的網絡。
先決條件
- 安裝 Firebase SDK 。
- 在Firebase 控制台中將您的應用添加到您的 Firebase 項目。
創建默認 Cloud Storage 存儲分區
從Firebase 控制台的導航窗格中,選擇Storage ,然後單擊Get started 。
查看有關使用安全規則保護 Cloud Storage 數據的消息。在開發過程中,考慮設置公共訪問規則。
為您的默認 Cloud Storage 存儲分區選擇一個位置。
此位置設置是您項目的默認 Google Cloud Platform (GCP) 資源位置。請注意,此位置將用於您的項目中需要位置設置的 GCP 服務,特別是您的Cloud Firestore數據庫和您的App Engine應用(如果您使用 Cloud Scheduler,這是必需的)。
如果您無法選擇位置,則您的項目已經有一個默認的 GCP 資源位置。它是在項目創建期間或在設置需要位置設置的其他服務時設置的。
單擊完成。
設置公共訪問
Cloud Storage for Firebase 提供了一種聲明性規則語言,可讓您定義數據的結構方式、索引方式以及何時可以讀取和寫入數據。默認情況下,對 Cloud Storage 的讀寫訪問受到限制,因此只有經過身份驗證的用戶才能讀取或寫入數據。要在不設置身份驗證的情況下開始使用,您可以配置公共訪問規則。
這確實使 Cloud Storage 對任何人開放,甚至是不使用您的應用程序的人,因此請確保在設置身份驗證時再次限制您的 Cloud Storage。
將雲存儲添加到您的應用
使用 Swift Package Manager 安裝和管理 Firebase 依賴項。
- 在 Xcode 中,打開您的應用項目,導航到File > Add Packages 。
- 出現提示時,添加 Firebase Apple 平台 SDK 存儲庫:
- 選擇雲存儲庫。
- 完成後,Xcode 將在後台自動開始解析和下載您的依賴項。
https://github.com/firebase/firebase-ios-sdk
設置雲存儲
您必須在創建或使用任何 Firebase 引用之前初始化 Firebase。如果您已經為其他 Firebase 功能執行此操作,則可以跳過此步驟。
- 在您的
UIApplicationDelegate
中導入FirebaseCore
模塊,以及您的應用委託使用的任何其他Firebase 模塊。例如,要使用 Cloud Firestore 和身份驗證:迅速
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- 配置
FirebaseApp
共享實例,通常在App
的初始化程序或應用委託的application(_:didFinishLaunchingWithOptions:)
方法中:迅速
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- 使用默認 Firebase 應用獲取對 Cloud Storage 服務的引用:
迅速
let storage = Storage.storage()
Objective-C
FIRStorage *storage = [FIRStorage 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 使用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
構建更複雜的應用程序,則可以創建使用該應用程序初始化的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 服務中的使用情況。您還可以訪問云存儲使用儀表板以獲取更詳細的使用信息。
Cloud Storage for Firebase 可讓您上傳和共享用戶生成的內容,例如圖片和視頻,從而讓您可以將富媒體內容構建到您的應用中。您的數據存儲在Google Cloud Storage 存儲桶中——一種具有高可用性和全局冗餘的 EB 級對象存儲解決方案。 Cloud Storage for Firebase 讓您可以直接從移動設備和網絡瀏覽器安全地上傳這些文件,輕鬆處理不穩定的網絡。
先決條件
- 安裝 Firebase SDK 。
- 在Firebase 控制台中將您的應用添加到您的 Firebase 項目。
創建默認 Cloud Storage 存儲分區
從Firebase 控制台的導航窗格中,選擇Storage ,然後單擊Get started 。
查看有關使用安全規則保護 Cloud Storage 數據的消息。在開發過程中,考慮設置公共訪問規則。
為您的默認 Cloud Storage 存儲分區選擇一個位置。
此位置設置是您項目的默認 Google Cloud Platform (GCP) 資源位置。請注意,此位置將用於您的項目中需要位置設置的 GCP 服務,特別是您的Cloud Firestore數據庫和您的App Engine應用(如果您使用 Cloud Scheduler,這是必需的)。
如果您無法選擇位置,則您的項目已經有一個默認的 GCP 資源位置。它是在項目創建期間或在設置需要位置設置的其他服務時設置的。
單擊完成。
設置公共訪問
Cloud Storage for Firebase 提供了一種聲明性規則語言,可讓您定義數據的結構方式、索引方式以及何時可以讀取和寫入數據。默認情況下,對 Cloud Storage 的讀寫訪問受到限制,因此只有經過身份驗證的用戶才能讀取或寫入數據。要在不設置身份驗證的情況下開始使用,您可以配置公共訪問規則。
這確實使 Cloud Storage 對任何人開放,甚至是不使用您的應用程序的人,因此請確保在設置身份驗證時再次限制您的 Cloud Storage。
將雲存儲添加到您的應用
使用 Swift Package Manager 安裝和管理 Firebase 依賴項。
- 在 Xcode 中,打開您的應用項目,導航到File > Add Packages 。
- 出現提示時,添加 Firebase Apple 平台 SDK 存儲庫:
- 選擇雲存儲庫。
- 完成後,Xcode 將在後台自動開始解析和下載您的依賴項。
https://github.com/firebase/firebase-ios-sdk
設置雲存儲
您必須在創建或使用任何 Firebase 引用之前初始化 Firebase。如果您已經為其他 Firebase 功能執行此操作,則可以跳過此步驟。
- 在您的
UIApplicationDelegate
中導入FirebaseCore
模塊,以及您的應用委託使用的任何其他Firebase 模塊。例如,要使用 Cloud Firestore 和身份驗證:迅速
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- 配置
FirebaseApp
共享實例,通常在App
的初始化程序或應用委託的application(_:didFinishLaunchingWithOptions:)
方法中:迅速
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- 使用默認 Firebase 應用獲取對 Cloud Storage 服務的引用:
迅速
let storage = Storage.storage()
Objective-C
FIRStorage *storage = [FIRStorage 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 使用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
構建更複雜的應用程序,則可以創建使用該應用程序初始化的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 服務中的使用情況。您還可以訪問云存儲使用儀表板以獲取更詳細的使用信息。