Начало работы с Cloud Storage для C++

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 по умолчанию

  1. На панели навигации консоли Firebase выберите Хранилище .

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

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

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

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

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

Теперь вы можете просмотреть контейнер на вкладке 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 .

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

Есть несколько вариантов использования, требующих дополнительной настройки:

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

Второй вариант использования полезен, если у вас есть данные с разными шаблонами доступа. Например: вы можете настроить мультирегиональный или региональный контейнер, который хранит изображения или другой часто используемый контент, и 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");

Следующие шаги