Cloud Storage for Firebase позволяет загружать и делиться пользовательским контентом, таким как изображения и видео, что позволяет встраивать мультимедийный контент в ваши приложения. Ваши данные хранятся в контейнере Google Cloud Storage — решении для хранения объектов эксабайтного масштаба с высокой доступностью и глобальной избыточностью. Cloud Storage for Firebase позволяет безопасно загружать эти файлы непосредственно с мобильных устройств и веб-браузеров, легко справляясь с нестабильной работой сетей.
Прежде чем начать
Если вы ещё этого не сделали, обязательно ознакомьтесь с руководством по началу работы с приложениями для Android . Оно включает в себя:
Создание проекта Firebase.
Регистрация вашего Android-приложения в проекте и подключение вашего приложения к Firebase путем добавления зависимостей Firebase, плагина служб Google и файла конфигурации Firebase (
google-services.json
) в ваше приложение.
Убедитесь, что ваш проект Firebase включен в тарифный план Blaze с оплатой по факту использования . Если вы новичок в Firebase и Google Cloud, проверьте, можете ли вы получить кредит в размере 300 долларов США .
Создайте контейнер Cloud Storage по умолчанию
На панели навигации консоли Firebase выберите Хранилище .
Если ваш проект еще не включен в тарифный план Blaze с оплатой по факту использования, вам будет предложено обновить его.
Нажмите « Начать» .
Выберите местоположение для контейнера по умолчанию.
Ведра в
US-CENTRAL1
,US-EAST1
иUS-WEST1
может воспользоваться тарифом «Всегда бесплатно» для Google Cloud Storage . Для сегментов во всех остальных локациях действуют тарифы и условия использования Google Cloud Storage .При желании вы можете позже создать несколько контейнеров , каждый из которых будет иметь свое собственное местоположение.
Настройте Firebase Security Rules для контейнера по умолчанию. В процессе разработки рассмотрите возможность настройки правил для публичного доступа .
Нажмите Готово .
Теперь вы можете просмотреть контейнер на вкладке « Файлы Cloud Storage » консоли Firebase . Формат имени контейнера по умолчанию:PROJECT_ID .firebasestorage.app
.
Настроить публичный доступ
Cloud Storage for Firebase предоставляет язык декларативных правил, позволяющий определить, как должны быть структурированы данные, как они должны индексироваться, а также когда данные могут быть прочитаны и записаны. По умолчанию доступ к чтению и записи в Cloud Storage ограничен, поэтому читать и записывать данные могут только аутентифицированные пользователи. Чтобы начать работу без настройки Authentication , вы можете настроить правила для публичного доступа .
Это делает Cloud Storage открытым для всех, даже для людей, не использующих ваше приложение, поэтому не забудьте снова ограничить свое Cloud Storage при настройке аутентификации.
Добавьте Cloud Storage SDK в свое приложение
В файле Gradle вашего модуля (уровня приложения) (обычно<project>/<app-module>/build.gradle.kts
или <project>/<app-module>/build.gradle
) добавьте зависимость для библиотеки Cloud Storage для Android. Для управления версиями библиотеки мы рекомендуем использовать Firebase Android BoM .dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.0.0")) // Add the dependency for the Cloud Storage library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-storage") }
Используя Firebase Android BoM , ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.
(Альтернатива) Добавьте зависимости библиотеки Firebase без использования BoM
Если вы решите не использовать Firebase BoM , вам необходимо указать каждую версию библиотеки Firebase в строке ее зависимостей.
Обратите внимание: если вы используете в своем приложении несколько библиотек Firebase, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.
dependencies { // Add the dependency for the Cloud Storage library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-storage:22.0.0") }
Настройте Cloud Storage в своем приложении
Убедитесь, что файл конфигурации Firebase (
google-services.json
) в кодовой базе вашего приложения обновлен с использованием имени вашего контейнера Cloud Storage по умолчанию.Используйте этот загруженный файл конфигурации для замены существующего файла
google-services.json
в каталоге модуля вашего приложения (уровня приложения).Убедитесь, что в вашем приложении есть только последний загруженный файл конфигурации и что к имени файла не добавлены дополнительные символы, например
(2)
.
Чтобы получить доступ к своему хранилищу Cloud Storage , создайте экземпляр
FirebaseStorage
:Kotlin
storage = Firebase.storage
// Alternatively, explicitly specify the bucket name URL. // val storage = Firebase.storage("gs://BUCKET_NAME")
Java
FirebaseStorage storage = FirebaseStorage.getInstance();
// Alternatively, explicitly specify the bucket name URL. // FirebaseStorage storage = FirebaseStorage.getInstance("gs://BUCKET_NAME");
Вы готовы начать использовать Cloud Storage !
Следующий шаг? Узнайте, как создать ссылку на Cloud Storage .
Расширенная настройка
Вот несколько вариантов использования, требующих дополнительной настройки:
- Использование контейнеров Cloud Storage в нескольких географических регионах
- Использование контейнеров Cloud Storage в разных классах хранения
- Использование контейнеров Cloud Storage с несколькими аутентифицированными пользователями в одном приложении
Первый вариант использования идеально подходит, если у вас есть пользователи по всему миру, и вы хотите хранить их данные поблизости. Например, вы можете создать контейнеры в США, Европе и Азии для хранения данных пользователей в этих регионах, чтобы сократить задержку.
Второй вариант использования полезен, если у вас есть данные с разными шаблонами доступа. Например, вы можете настроить мультирегиональный или региональный контейнер для хранения изображений или другого часто используемого контента, а также контейнер для хранения резервных копий пользователей или другого редко используемого контента.
В любом из этих случаев вам понадобится несколько контейнеров Cloud Storage .
Третий вариант использования полезен, если вы разрабатываете приложение, например, Google Диск, которое позволяет пользователям иметь несколько учётных записей (например, личную и рабочую). Вы можете использовать отдельный экземпляр Firebase App для аутентификации каждой дополнительной учётной записи.
Используйте несколько контейнеров Cloud Storage
Если вы хотите использовать контейнер Cloud Storage отличный от контейнера по умолчанию, описанного ранее в этом руководстве, или использовать несколько контейнеров Cloud Storage в одном приложении, вы можете создать экземпляр FirebaseStorage
, который ссылается на ваш пользовательский контейнер:
Kotlin
// Get a non-default Storage bucket val storage = Firebase.storage("gs://my-custom-bucket")
Java
// Get a non-default Storage bucket FirebaseStorage storage = FirebaseStorage.getInstance("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
, вы можете создать экземпляр FirebaseStorage
, инициализированный этим приложением:
Kotlin
// Get the default bucket from a custom FirebaseApp val storage = Firebase.storage(customApp!!) // Get a non-default bucket from a custom FirebaseApp val customStorage = Firebase.storage(customApp, "gs://my-custom-bucket")
Java
// Get the default bucket from a custom FirebaseApp FirebaseStorage storage = FirebaseStorage.getInstance(customApp); // Get a non-default bucket from a custom FirebaseApp FirebaseStorage customStorage = FirebaseStorage.getInstance(customApp, "gs://my-custom-bucket");
Следующие шаги
Подготовьтесь к запуску вашего приложения:
Включите App Check , чтобы гарантировать, что только ваши приложения смогут получить доступ к вашим хранилищам.
Настройте оповещения о бюджете для вашего проекта в консоли Google Cloud .
Отслеживайте панель управления «Использование и выставление счетов» в консоли Firebase , чтобы получить общую картину использования ресурсов вашего проекта в различных сервисах Firebase. Вы также можете посетить панель управления «Использование Cloud Storage для получения более подробной информации об использовании.
Ознакомьтесь с контрольным списком запуска Firebase .