Wprowadzenie do Cloud Storage dla C++

Cloud Storage dla Firebase umożliwia przesyłanie i udostępnianie treści użytkowników, np. obrazów i filmów, co pozwala umieszczać w aplikacjach treści multimedialne. Twoje dane są przechowywane w zasobniku Google Cloud Storage – rozwiązaniu obiektowej pamięci masowej w skali eksabajtowej o wysokiej dostępności i globalnej nadmiarowości. Cloud Storage dla Firebase umożliwia bezpieczne przesyłanie tych plików bezpośrednio z urządzeń mobilnych i przeglądarek, co pozwala łatwo obsługiwać niestabilne sieci.

Zanim zaczniesz

Zanim zaczniesz korzystać z Cloud Storage, musisz:

  • Zarejestruj swój projekt C++ i skonfiguruj go pod kątem korzystania z Firebase.

    Jeśli Twój projekt C++ korzysta już z Firebase, oznacza to, że jest już zarejestrowany i skonfigurowany dla Firebase.

  • Dodaj pakiet SDK Firebase C++ do projektu w C++.

Pamiętaj, że dodanie Firebase do projektu C++ wymaga wykonania zadań zarówno w konsoli Firebase, jak i w otwartym projekcie C++ (np. musisz pobrać pliki konfiguracyjne Firebase z konsoli, a następnie przenieść je do projektu C++).

Tworzenie domyślnego zasobnika Cloud Storage

  1. W panelu nawigacji konsoli Firebase kliknij Miejsce na dane, a potem kliknij Rozpocznij.

  2. Przeczytaj komunikaty na temat zabezpieczania danych w Cloud Storage za pomocą reguł zabezpieczeń. W trakcie programowania rozważ skonfigurowanie reguł dostępu publicznego.

  3. Wybierz lokalizację domyślnego zasobnika Cloud Storage.

    • To ustawienie lokalizacji określa domyślną lokalizację zasobów Google Cloud Platform (GCP) dla Twojego projektu. Pamiętaj, że ta lokalizacja będzie używana w przypadku usług GCP w projekcie, które wymagają ustawienia lokalizacji, a zwłaszcza bazy danych Cloud Firestore i aplikacji App Engine (co jest wymagane, jeśli używasz usługi Cloud Scheduler).

    • Jeśli nie możesz wybrać lokalizacji, oznacza to, że Twój projekt ma już domyślną lokalizację zasobów GCP. Wartość została ustawiona podczas tworzenia projektu lub podczas konfigurowania innej usługi, która wymaga ustawienia lokalizacji.

    Jeśli korzystasz z abonamentu Blaze, możesz utworzyć wiele zasobników, z których każdy będzie miał własną lokalizację.

  4. Kliknij Gotowe.

Konfigurowanie dostępu publicznego

Cloud Storage dla Firebase udostępnia język reguł deklaratywnych, który pozwala zdefiniować, jak dane powinny być uporządkowane, jak powinny być indeksowane oraz kiedy dane mogą być odczytywane i zapisywane. Domyślnie uprawnienia do odczytu i zapisu w Cloud Storage są ograniczone, więc tylko uwierzytelnieni użytkownicy mogą odczytywać i zapisywać dane. Aby rozpocząć bez konfigurowania uwierzytelniania, możesz skonfigurować reguły dostępu publicznego.

Dzięki temu usługa Cloud Storage jest dostępna dla wszystkich, nawet dla osób, które nie korzystają z Twojej aplikacji. Pamiętaj więc, aby ponownie ograniczyć Cloud Storage podczas konfigurowania uwierzytelniania.

Utwórz i zainicjuj firebase::App

Aby uzyskać dostęp do Cloud Storage, musisz utworzyć i zainicjować firebase::App.

Uwzględnij plik nagłówka firebase::App:

#include "firebase/app.h"

Android

Utwórz firebase::App, przekazując środowisko JNI i jobjectodwołanie do aktywności Java jako argumenty:

app = App::Create(AppOptions(), jni_env, activity);

iOS+

Utwórz firebase::App:

app = App::Create(AppOptions());

Uzyskaj dostęp do zajęć firebase::storage::Storage

Klasa firebase::storage::Storage jest punktem wejścia pakietu SDK C++ Cloud Storage.

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

Możesz już zacząć korzystać z Cloud Storage.

Najpierw dowiedz się, jak utworzyć plik referencyjny do Cloud Storage.

Konfiguracja zaawansowana

W kilku przypadkach dodatkowa konfiguracja może być wymagana:

Pierwszy przypadek użycia jest idealny, jeśli masz użytkowników na całym świecie i chcesz przechowywać ich dane w ich pobliżu. Możesz na przykład utworzyć zasobniki w Stanach Zjednoczonych, Europie i Azji do przechowywania danych użytkowników w tych regionach, aby skrócić czas oczekiwania.

Drugi przypadek użycia jest przydatny, gdy masz dane o różnych wzorcach dostępu. Możesz na przykład skonfigurować wieloregionalny lub regionalny zasobnik do przechowywania zdjęć lub innych często używanych treści, a także zasobnik Nearline lub Coldline, w którym będą przechowywane kopie zapasowe danych użytkowników lub inne rzadko używane treści.

W każdym z tych przypadków warto używać wielu zasobników Cloud Storage.

Trzeci przypadek użycia jest przydatny, gdy tworzysz aplikację, np. Dysk Google, która pozwala użytkownikom mieć więcej niż jedno konto (na przykład konto osobiste i służbowe). Do uwierzytelniania każdego dodatkowego konta możesz użyć niestandardowej instancji aplikacji Firebase.

Korzystanie z wielu zasobników Cloud Storage

Jeśli chcesz użyć innego zasobnika Cloud Storage niż podany powyżej lub użyć wielu zasobników Cloud Storage w jednej aplikacji, możesz utworzyć instancję firebase::storage::Storage odwołującą się do zasobnika niestandardowego:

// Get a non-default Cloud Storage bucket
Storage* storage = Storage::GetInstance("gs://my-custom-bucket");

Praca z zaimportowanymi zasobnikami

Podczas importowania do Firebase istniejącego zasobnika Cloud Storage musisz zezwolić Firebase na dostęp do tych plików za pomocą narzędzia gsutil, które wchodzi w skład pakietu SDK Google Cloud:

gsutil -m acl ch -r -u service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

Numer projektu znajdziesz we wprowadzeniu do projektów Firebase.

Nie ma to wpływu na nowo utworzone zasobniki, ponieważ ich domyślna kontrola dostępu zezwala na dostęp Firebase. Jest to środek tymczasowy i w przyszłości będzie realizowany automatycznie.

Użyj niestandardowej aplikacji Firebase

Jeśli tworzysz bardziej złożoną aplikację za pomocą niestandardowego obiektu firebase::App, możesz utworzyć instancję firebase::storage::Storage zainicjowaną z tą aplikacją:

// 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");

Dalsze kroki