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 выберите Базы данных и хранилище > Хранилище.
Если ваш проект ещё не переведен на тарифный план Blaze с оплатой по мере использования, вам будет предложено это сделать.
Нажмите Начать.
Выберите местоположение для сегмента по умолчанию.
Корзины в
,US-CENTRAL1 иUS-EAST1 могут использовать уровень"Всегда бесплатно" для Google Cloud Storage. Корзины в других регионах соответствуют Google Cloud Storageценам и условиям использования.US-WEST1При необходимости вы можете позже создать несколько сегментов, каждый из которых будет связан с определенным местоположением.
Настройте Firebase Security Rules для корзины по умолчанию. На этапе разработки рекомендуем настроить правила для общедоступных статей.
Нажмите Готово.
Теперь вы можете посмотреть сегмент в консоли Firebase (выберите Базы данных и хранилище > Хранилище > вкладка Файлы).
Формат названия сегмента по умолчанию: 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.