Cloud Storage for Firebase позволяет вам загружать и делиться пользовательским контентом, таким как изображения и видео, что позволяет вам встраивать в свои приложения богатый медиаконтент. Ваши данные хранятся в контейнере Google Cloud Storage — решении для хранения объектов в масштабе экзабайт с высокой доступностью и глобальной избыточностью. Cloud Storage for Firebase позволяет вам безопасно загружать эти файлы напрямую с мобильных устройств и веб-браузеров, легко справляясь с нестабильными сетями.
Прежде чем начать
Прежде чем использовать Cloud Storage , вам необходимо:
Зарегистрируйте свой проект C++ и настройте его для использования Firebase.
Если ваш проект C++ уже использует Firebase, значит он уже зарегистрирован и настроен для Firebase.
Добавьте Firebase C++ SDK в свой проект C++.
Обратите внимание, что добавление Firebase в ваш проект C++ включает в себя задачи как в консоли Firebase , так и в вашем открытом проекте C++ (например, вы загружаете файлы конфигурации Firebase из консоли, а затем перемещаете их в ваш проект C++).
Также убедитесь, что ваш проект Firebase находится на тарифном плане Blaze с оплатой по мере использования . Если вы новичок в Firebase и Google Cloud, проверьте, имеете ли вы право на кредит в размере 300 долларов .
Создайте контейнер Cloud Storage по умолчанию
На панели навигации консоли Firebase выберите Хранилище .
Если ваш проект еще не включен в тарифный план Blaze с оплатой по факту использования, вам будет предложено обновить его.
Нажмите « Начать» .
Выберите местоположение для контейнера по умолчанию.
Ведра в
US-CENTRAL1
,US-EAST1
иUS-WEST1
может воспользоваться уровнем "Always Free" для Google Cloud Storage . Бакеты во всех других местах следуют ценам и использованию Google Cloud Storage .При желании вы можете позже создать несколько контейнеров , каждый из которых будет иметь свое собственное местоположение.
Настройте Firebase Security Rules для вашего контейнера по умолчанию. Во время разработки рассмотрите возможность настройки правил для публичного доступа .
Нажмите Готово .
Теперь вы можете просмотреть контейнер на вкладке Cloud Storage Files консоли Firebase . Формат имени контейнера по умолчанию:PROJECT_ID .firebasestorage.app
.
Настроить публичный доступ
Cloud Storage for Firebase предоставляет декларативный язык правил, который позволяет вам определять, как должны быть структурированы ваши данные, как они должны быть индексированы и когда ваши данные могут быть прочитаны и записаны. По умолчанию доступ для чтения и записи в Cloud Storage ограничен, поэтому только аутентифицированные пользователи могут читать или записывать данные. Чтобы начать работу без настройки Authentication , вы можете настроить правила для публичного доступа .
Это делает Cloud Storage открытым для всех, даже для людей, не использующих ваше приложение, поэтому не забудьте снова ограничить свое Cloud Storage при настройке аутентификации.
Создать и инициализировать firebase::App
Прежде чем получить доступ к Cloud Storage , вам необходимо создать и инициализировать firebase::App
.
Включите заголовочный файл для firebase::App
:
#include "firebase/app.h"
андроид
Создайте firebase::App
, передав среду JNI и ссылку на jobject
в Java Activity в качестве аргументов:
app = App::Create(AppOptions(), jni_env, activity);
iOS+
Создайте firebase::App
:
app = App::Create(AppOptions());
Доступ к классу firebase::storage::Storage
Класс firebase::storage::Storage
является точкой входа для Cloud Storage C++ SDK.
Storage* storage = Storage::GetInstance(app);
Вы готовы начать использовать Cloud Storage !
Следующий шаг? Узнайте, как создать ссылку на Cloud Storage .
Расширенная настройка
Есть несколько вариантов использования, требующих дополнительной настройки:
- Использование Cloud Storage в нескольких географических регионах
- Использование контейнеров Cloud Storage в разных классах хранения
- Использование Cloud Storage с несколькими аутентифицированными пользователями в одном приложении
Первый вариант использования идеален, если у вас есть пользователи по всему миру, и вы хотите хранить их данные рядом с ними. Например, вы можете создать контейнеры в США, Европе и Азии для хранения данных пользователей в этих регионах, чтобы сократить задержку.
Второй вариант использования полезен, если у вас есть данные с разными шаблонами доступа. Например: вы можете настроить мультирегиональный или региональный контейнер, который хранит изображения или другой часто используемый контент, и nearline или coldline контейнер, который хранит резервные копии пользователей или другой редко используемый контент.
В любом из этих случаев вам понадобится использовать несколько контейнеров Cloud Storage .
Третий вариант использования полезен, если вы создаете приложение, например Google Drive, которое позволяет пользователям иметь несколько учетных записей для входа (например, личную учетную запись и рабочую учетную запись). Вы можете использовать пользовательский экземпляр Firebase App для аутентификации каждой дополнительной учетной записи.
Используйте несколько Cloud Storage
Если вы хотите использовать контейнер Cloud Storage , отличный от указанного выше по умолчанию, или использовать несколько контейнеров Cloud Storage в одном приложении, вы можете создать экземпляр firebase::storage::Storage
, который ссылается на ваш пользовательский контейнер:
// Get a non-default Cloud Storage bucket Storage* storage = Storage::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
Если вы создаете более сложное приложение с использованием пользовательского firebase::App
, вы можете создать экземпляр firebase::storage::Storage
инициализированный с этим приложением:
// Get the default bucket from a custom firebase::App Storage* storage = Storage::GetInstance(customApp); // Get a non-default bucket from a custom firebase::App Storage* storage = Storage::GetInstance(customApp, "gs://my-custom-bucket");
Следующие шаги
Подготовьтесь к запуску вашего приложения:
- Настройте оповещения о бюджете для вашего проекта в консоли Google Cloud .
- Контролируйте панель управления использованием и выставлением счетов в консоли Firebase , чтобы получить общую картину использования вашего проекта в нескольких сервисах Firebase. Вы также можете посетить панель управления использованием Cloud Storage для получения более подробной информации об использовании.
- Ознакомьтесь с контрольным списком запуска Firebase .