Cloud Storage for Firebase позволяет загружать и публиковать пользовательский контент, например изображения и видео, что позволяет создавать мультимедийный контент в приложениях. Ваши данные хранятся в сегменте Google Cloud Storage – решении для хранения объектов в масштабе эксабайтов с высокой доступностью и глобальным резервированием. Cloud Storage for Firebase позволяет безопасно загружать эти файлы непосредственно с мобильных устройств и веб-браузеров, легко справляясь с нестабильными сетями.
Подготовка
Если вы ещё этого не сделали, ознакомьтесь с руководством по началу работы с приложениями для платформ Apple. например:
Как создать проект Firebase.
Зарегистрируйте приложение для платформ Apple в проекте и подключите его к Firebase, добавив в приложение библиотеку Firebase и файл конфигурации Firebase (
GoogleService-Info.plist).
Убедитесь, что для проекта Firebase выбран тарифный план Blaze с оплатой по мере использования. Это необходимо для работы с Cloud Storage for Firebase. Если вы раньше не работали с Firebase и Google Cloud, проверьте, можете ли вы получить бонус в размере 300 долларов США на бесплатную пробную версию.
Создать сегмент Cloud Storage по умолчанию
В консоли Firebase выберите Databases & Storage (Базы данных и хранилище) > Storage (Хранилище).
Если в вашем проекте не используется тарифный план Blaze с оплатой по мере использования, вам будет предложено перейти на него.
Нажмите Начать.
Выберите местоположение для сегмента по умолчанию.
Для сегментов в регионах
,US-CENTRAL1 иUS-EAST1 можно использовать бесплатный уровень для Google Cloud Storage. Для сегментов во всех остальных местоположениях действуют тарифы и условия использования Google Cloud Storage.US-WEST1При желании вы можете создать несколько сегментов, каждый со своим местоположением.
Настройте Firebase Security Rules для сегмента по умолчанию. На этапе разработки рекомендуем настроить правила для общедоступного режима.
Нажмите Готово.
Теперь вы можете посмотреть сегмент в консоли Firebase (выберите Databases & Storage (Базы данных и хранилище) > Storage (Хранилище) > вкладка Files (Файлы)).
Формат названия сегмента по умолчанию: PROJECT_ID.firebasestorage.app
Как настроить общий доступ
Cloud Storage for Firebase предоставляет декларативный язык правил, который позволяет определить, как должны быть структурированы и проиндексированы ваши данные, а также когда их можно читать и записывать. По умолчанию доступ на чтение и запись в Cloud Storage ограничен, поэтому читать и записывать данные могут только аутентифицированные пользователи. Чтобы начать работу без настройки Authentication, вы можете настроить правила для общего доступа.
В этом случае Cloud Storage будет доступен всем, даже тем, кто не пользуется вашим приложением. Поэтому не забудьте снова ограничить доступ к Cloud Storage, когда настроите аутентификацию.
Добавьте Cloud Storage в свое приложение
Для установки зависимостей Firebase и управления ими используйте Swift Package Manager.
- Откройте проект приложения в Xcode и перейдите в меню File (Файл) > Add Packages (Добавить пакеты).
- Когда появится запрос, добавьте хранилище Firebase SDK для платформ Apple:
- Выберите библиотеку Cloud Storage.
- Добавьте флаг
-ObjCв раздел Other Linker Flags (Другие флаги компоновщика) в настройках сборки целевого объекта. - После этого Xcode автоматически начнет распознавать и скачивать зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk.git
Как настроить Cloud Storage в приложении
Инициализируйте Firebase, прежде чем создавать или использовать ссылки Firebase.
Возможно, вы уже сделали это, если настраивали другой продукт Firebase, но вам нужно убедиться, что библиотека
FirebaseStorageдобавлена в список импорта.Импортируйте модули
FirebaseCoreиFirebaseStorageвUIApplicationDelegate. Также рекомендуем добавить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; // ...Настройте общий экземпляр
FirebaseAppв методеapplication(_:didFinishLaunchingWithOptions:)делегата приложения: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];(Только для SwiftUI) Создайте делегат приложения и прикрепите его к структуре
Appс помощьюUIApplicationDelegateAdaptorилиNSApplicationDelegateAdaptor. Также необходимо отключить подмену делегата приложения. Дополнительную информацию можно найти в инструкциях по SwiftUI.SwiftUI
@main struct YourApp: App { // Register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Получите ссылку на сервис Cloud Storage, используя приложение Firebase по умолчанию.
Убедитесь, что в файле конфигурации Firebase (
GoogleService-Info.plist) в базе кода вашего приложения указано название корзины Cloud Storage по умолчанию.Замените скачанным файлом конфигурации существующий файл
GoogleService-Info.plistв корневом каталоге проекта Xcode. Если появится запрос, добавьте файл конфигурации во все целевые объекты.Убедитесь, что в вашем приложении есть только этот последний скачанный файл конфигурации и что к его названию не добавлены дополнительные символы, например
(2).
Получите ссылку на сервис Cloud Storage, используя приложение Firebase по умолчанию:
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…
Расширенная настройка
В некоторых случаях требуется дополнительная настройка:
- Использование Cloud Storage сегментов в нескольких географических регионах
- Используется 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 вам нужно будет предоставить Firebase доступ к этим файлам с помощью инструмента gsutil, включенного в Google Cloud SDK:
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 Использование.
Ознакомьтесь с контрольным списком для запуска Firebase.