Начало работы с 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 с оплатой по мере использования , это требование вступило в силу в октябре 2024 года (см. наши часто задаваемые вопросы ). Если вы новичок в Firebase и Google Cloud, проверьте, имеете ли вы право на кредит в размере 300 долларов .

Создайте корзину Cloud Storage по умолчанию.

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

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

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

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

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

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

Теперь вы можете просмотреть содержимое корзины на вкладке «Файлы» в Cloud Storage Storage консоли Firebase . Формат имени корзины по умолчанию: PROJECT_ID .firebasestorage.app .

Настройте публичный доступ

Cloud Storage for Firebase provides a declarative rules language that lets you define how your data should be structured, how it should be indexed, and when your data can be read from and written to. By default, read and write access to Cloud Storage is restricted so only authenticated users can read or write data. To get started without setting up Authentication , you can configure your rules for public access .

Это делает Cloud Storage доступным для всех, даже для тех, кто не использует ваше приложение, поэтому обязательно снова ограничьте доступ к Cloud Storage при настройке аутентификации.

Создайте и инициализируйте firebase::App

Прежде чем получить доступ к Cloud Storage , вам необходимо создать и инициализировать firebase::App .

Включите заголовочный файл для firebase::App :

#include "firebase/app.h"

Android

Создайте 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 является точкой входа для C++ SDK Cloud Storage .

Storage* storage = Storage::GetInstance(app);

Вы готовы начать использовать Cloud Storage !

Следующий шаг? Узнайте, как создать справочный файл Cloud Storage .

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

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

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

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

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

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

Используйте несколько сегментов Cloud Storage

If you want to use a Cloud Storage bucket other than the default provided above, or use multiple Cloud Storage buckets in a single app, you can create an instance of firebase::storage::Storage that references your custom bucket:

// 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

You can find your project number as described in the introduction to Firebase projects .

Это не затронет вновь созданные хранилища, поскольку для них по умолчанию установлен контроль доступа, разрешающий использование 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");

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