Note that adding Firebase to your C++ project involves tasks both in the
Firebase console and in your open C++ project (for example, you download
Firebase config files from the console, then move them into your C++ project).

Create a default Storage bucket

From the navigation pane of the Firebase console, select Storage,
then click Get started.

If you aren't able to select a location, then your project already
has a default GCP resource location. It was set either during project
creation or when setting up another service that requires a location
setting.

Set up public access

Cloud Storage for Firebase provides a declarative rules language that
allows you to 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 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.

This does make Storage open to anyone, even people not using your app,
so be sure to restrict your Storage again when you set up authentication.

Create and initialize firebase::App

Before you can access the Storage, you'll need to create and initialize the
firebase::App.

You only need to initialize firebase::App once, no matter
how many Firebase C++ features you use.

Include the header file for firebase::App:

#include "firebase/app.h"

Android

Create the firebase::App, passing the JNI environment and a jobject
reference to the Java Activity as arguments:

Advanced setup

Using storage buckets with multiple authenticated users in the same app

The first use case is perfect if you have users across the world, and want to
store their data near them. For instance, you can create buckets in the US,
Europe, and Asia to store data for users in those regions to reduce latency.

The second use case is helpful if you have data with different access patterns.
For instance: you can set up a multi-regional or regional bucket that stores
pictures or other frequently accessed content, and a nearline or coldline bucket
that stores user backups or other infrequently accessed content.

The third use case is useful if you're building an app, like Google Drive, which
lets users have multiple logged in accounts (for instance, a personal account
and a work account). You can use a custom Firebase App
instance to authenticate each additional account.

Use multiple storage buckets

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