Начало работы с 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 выберите Storage .

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

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

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

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

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

Теперь вы можете просмотреть корзину на вкладке «Файлы Cloud Storage » консоли 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:

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 .

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

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

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