firebase::ModuleInitializer

#include <util.h>

Utility class to help with initializing Firebase modules.

Summary

This optional class handles a basic Firebase C++ SDK code pattern: attempt to initialize a Firebase module, and if the initialization fails on Android due to Google Play services being unavailable, prompt the user to update/enable Google Play services on their device.

If the developer wants more advanced behavior (for example, wait to prompt the user to update or enable Google Play services until later, or opt not to use Firebase modules), they can still initialize each Firebase module individually, and use google_play_services::MakeAvailable() directly if any initializations fail.

Public functions

Initialize

Initialize Firebase modules by calling one or more user-supplied functions, each of which must initialize at most one library, and should return the InitResult of the initialization.

This function will run the initializers in order, checking the return value of each. On Android, if the InitResult returned is kInitResultFailedMissingDependency, this indicates that Google Play services is not available and a Firebase module requires it. This function will attempt to fix Google Play services, and will retry initializations where it left off, beginning with the one that failed.

Note:If a pending Initialize() is already running, this function will return the existing Future rather than adding any new functions to the initializer list.

Details

Parameters

app

The firebase::App that will be passed to the initializers, as well as used to fix Google Play services on Android if needed.

context

User-defined context, which will be passed to the initializer functions. If you don't need this, you can use nullptr.

init_fns

Your initialization functions to call, in an array. At their simplest, these will each simply call a single Firebase module's Initialize(app) and return the result, but you can perform more complex logic if you prefer.

init_fns_count

Number of initialization functions in the supplied array.

Returns

A future result. When all of the initializers are completed, the Future will be completed with Error() = 0. If an initializer fails and the situation cannot be fixed, the Future will be completed with Error() equal to the number of initializers that did not succeed (since they are run in order, this tells you which ones failed).