Начало работы с Cloud Storage на Android

Cloud Storage for Firebase позволяет загружать и публиковать пользовательский контент, например изображения и видео, что позволяет создавать мультимедийный контент в приложениях. Ваши данные хранятся в сегменте Google Cloud Storage – решении для хранения объектов в масштабе эксабайтов с высокой доступностью и глобальным резервированием. Cloud Storage for Firebase позволяет безопасно загружать эти файлы непосредственно с мобильных устройств и веб-браузеров, легко справляясь с нестабильными сетями.

Подготовка

  1. Если вы ещё не сделали этого, ознакомьтесь с кратким руководством по началу работы с приложениями для Android. например:

    • Как создать проект Firebase.

    • Зарегистрируйте приложение Android в проекте и подключите его к Firebase, добавив зависимости Firebase, плагин сервисов Google и файл конфигурации Firebase (google-services.json).

  2. Убедитесь, что для проекта Firebase выбран тарифный план Blaze с оплатой по мере использования. Это необходимо для работы с Cloud Storage for Firebase. Если вы раньше не работали с Firebase и Google Cloud, проверьте, можете ли вы получить бонус в размере 300 долларов США.

Создать сегмент Cloud Storage по умолчанию

  1. В консоли Firebase выберите Databases & Storage (Базы данных и хранилище) > Storage (Хранилище).

    Если в вашем проекте не используется тарифный план Blaze с оплатой по мере использования, вам будет предложено перейти на него.

  2. Нажмите Начать.

  3. Выберите местоположение для сегмента по умолчанию.

  4. Настройте Firebase Security Rules для сегмента по умолчанию. На этапе разработки рекомендуем настроить правила для общедоступного режима.

  5. Нажмите Готово.

Теперь вы можете посмотреть сегмент в консоли Firebase (выберите Databases & Storage (Базы данных и хранилище) > Storage (Хранилище) > вкладка Files (Файлы)). Формат названия сегмента по умолчанию: 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:35.0.1"))

    // 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:23.0.0")
}

Как настроить Cloud Storage в приложении

  1. Убедитесь, что в файл конфигурации Firebase (google-services.json) в базе кода приложения добавлено название сегмента Cloud Storage по умолчанию.

    1. Получите обновленный файл конфигурации.

    2. Замените существующий файл google-services.json в каталоге модуля приложения (на уровне приложения) на скачанный файл конфигурации.

      Убедитесь, что в вашем приложении есть только этот последний скачанный файл конфигурации и что к его названию не добавлены дополнительные символы, например (2).

  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…

Расширенная настройка

В некоторых случаях требуется дополнительная настройка:

Первый вариант идеально подходит, если у вас есть пользователи по всему миру и вы хотите хранить их данные рядом с ними. Например, вы можете создать сегменты в США, Европе и Азии, чтобы хранить данные пользователей из этих регионов и сократить задержку.

Второй вариант использования полезен, если у вас есть данные с разными шаблонами доступа. Например, вы можете настроить мультирегиональный или региональный сегмент, в котором будут храниться изображения или другой часто запрашиваемый контент, и сегмент Nearline или Coldline, в котором будут храниться резервные копии пользователей или другой редко запрашиваемый контент.

В обоих случаях вам потребуется использовать несколько сегментов Cloud Storage.

Третий вариант подходит, если вы создаете приложение, например Google Диск, в котором пользователи могут входить в несколько аккаунтов (например, личный и рабочий). Для аутентификации каждого дополнительного аккаунта можно использовать собственный экземпляр приложения Firebase.

Использование нескольких сегментов 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");

Дальнейшие действия