firebase::analytics

Firebase Analytics API.

Summary

Seethe developer guides for general information on using Firebase Analytics in your apps.

Enumerations

AppLifecycleStateenum
The state of an app in its lifecycle.
ConsentStatusenum
The status value of the consent type.
ConsentTypeenum
The type of consent to set.

Typedefs

LogCallbackusing
std::function< void(LogLevel, const char *)>
The callback type for logging messages from the SDK.

Functions

GetAnalyticsInstanceId()
Future< std::string >
Get the instance ID from the analytics service.
GetAnalyticsInstanceIdLastResult()
Future< std::string >
Get the result of the most recentGetAnalyticsInstanceId() call.
GetSessionId()
Future< int64_t >
Asynchronously retrieves the identifier of the current app session.
GetSessionIdLastResult()
Future< int64_t >
Get the result of the most recentGetSessionId() call.
Initialize(constApp & app)
void
Initialize the Analytics API.
InitiateOnDeviceConversionMeasurementWithEmailAddress(const char *email_address)
void
Initiates on-device conversion measurement given a user email address on iOS and tvOS (no-op on Android).
InitiateOnDeviceConversionMeasurementWithHashedEmailAddress(std::vector< unsigned char > hashed_email_address)
void
Initiates on-device conversion measurement given a SHA256-hashed user email address.
InitiateOnDeviceConversionMeasurementWithHashedPhoneNumber(std::vector< unsigned char > hashed_phone_number)
void
Initiates on-device conversion measurement given a SHA256-hashed phone number in E.164 format.
InitiateOnDeviceConversionMeasurementWithPhoneNumber(const char *phone_number)
void
Initiates on-device conversion measurement given a phone number in E.164 format on iOS (no-op on Android).
IsDesktopInitialized()
bool
Returns whether the desktop Analytics SDK is initialized.
LogEvent(const char *name, const char *parameter_name, const char *parameter_value)
void
Log an event with one string parameter.
LogEvent(const char *name, const char *parameter_name, const double parameter_value)
void
Log an event with one float parameter.
LogEvent(const char *name, const char *parameter_name, const int64_t parameter_value)
void
Log an event with one 64-bit integer parameter.
LogEvent(const char *name, const char *parameter_name, const int parameter_value)
void
Log an event with one integer parameter (stored as a 64-bit integer).
LogEvent(const char *name)
void
Log an event with no parameters.
LogEvent(const char *name, constParameter *parameters, size_t number_of_parameters)
void
Log an event with associated parameters.
LogEvent(const char *name, const std::vector<Parameter > & parameters)
void
Log an event with associated parameters.
NotifyAppLifecycleChange(AppLifecycleState state)
void
Notifies the current state of the app's lifecycle.
ResetAnalyticsData()
void
Clears all analytics data for this app from the device and resets the app instance id.
SetAnalyticsCollectionEnabled(bool enabled)
void
Sets whether analytics collection is enabled for this app on this device.
SetConsent(const std::map<ConsentType,ConsentStatus > & consent_settings)
void
Sets the applicable end user consent state (e.g., for device identifiers) for this app on this device.
SetDefaultEventParameters(constParameter *parameters, size_t number_of_parameters)
void
Adds parameters that will be set on every event logged from the SDK.
SetDefaultEventParameters(const std::vector<Parameter > & parameters)
void
Adds parameters that will be set on every event logged from the SDK.
SetDesktopDebugMode(bool enabled)
void
Sets whether desktop debug mode is enabled.
SetLogCallback(constLogCallback & callback)
void
Allows the passing of a callback to be used when the SDK logs any messages regarding its behaviour.
SetSessionTimeoutDuration(int64_t milliseconds)
void
Sets the duration of inactivity that terminates the current session.
SetUserId(const char *user_id)
void
Sets the user ID property.
SetUserProperty(const char *name, const char *property)
void
Set a user property to the given value.
Terminate()
void
Terminate the Analytics API.

Structs

firebase::analytics::Parameter

Event parameter.

Enumerations

AppLifecycleState

AppLifecycleState

The state of an app in its lifecycle.

kUnknown is an invalid state that is used to capture uninitialized values. kTermination is used to indicate that the app is about to be terminated.

ConsentStatus

ConsentStatus

The status value of the consent type.

Supported statuses are kConsentStatusGranted and kConsentStatusDenied.

ConsentType

ConsentType

The type of consent to set.

Supported consent types are mapped to corresponding constants in the Android and iOS SDKs. Omitting a type retains its previous status.

Typedefs

LogCallback

std::function<void(LogLevel,constchar*)>LogCallback

The callback type for logging messages from the SDK.

The callback is invoked whenever the SDK logs a message. Currently only works for Windows Desktop.

Details
Parameters
log_level
The log level of the message.
message
The message logged by the SDK.

Functions

GetAnalyticsInstanceId

Future<std::string>GetAnalyticsInstanceId()

Get the instance ID from the analytics service.

Note: This isnot the same ID as the ID returned by firebase::instance_id::InstanceId.

Details
Returns
Object which can be used to retrieve the analytics instance ID.

GetAnalyticsInstanceIdLastResult

Future<std::string>GetAnalyticsInstanceIdLastResult()

Get the result of the most recentGetAnalyticsInstanceId() call.

Details
Returns
Object which can be used to retrieve the analytics instance ID.

GetSessionId

Future<int64_t>GetSessionId()

Asynchronously retrieves the identifier of the current app session.

The session ID retrieval could fail due to Analytics collection disabled, or if the app session was expired.

Details
Returns
Object which can be used to retrieve the identifier of the current app session.

GetSessionIdLastResult

Future<int64_t>GetSessionIdLastResult()

Get the result of the most recentGetSessionId() call.

Details
Returns
Object which can be used to retrieve the identifier of the current app session.

Initialize

voidInitialize(constApp&app)

Initialize the Analytics API.

This must be called prior to calling any other methods in thefirebase::analytics namespace.

See also:firebase::App::GetInstance().

Details
Parameters
app
Defaultfirebase::App instance.

InitiateOnDeviceConversionMeasurementWithEmailAddress

voidInitiateOnDeviceConversionMeasurementWithEmailAddress(constchar*email_address)

Initiates on-device conversion measurement given a user email address on iOS and tvOS (no-op on Android).

On iOS and tvOS, this method requires the dependency GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise the invocation results in a no-op.

Details
Parameters
email_address
User email address. Include a domain name for all email addresses (e.g. gmail.com or hotmail.co.jp).

InitiateOnDeviceConversionMeasurementWithHashedEmailAddress

voidInitiateOnDeviceConversionMeasurementWithHashedEmailAddress(std::vector<unsignedchar>hashed_email_address)

Initiates on-device conversion measurement given a SHA256-hashed user email address.

Requires dependency GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a no-op.

Details
Parameters
hashed_email_address
User email address as a UTF8-encoded string normalized and hashed according to the instructions athttps://firebase.google.com/docs/tutorials/ads-ios-on-device-measurement/step-3.

InitiateOnDeviceConversionMeasurementWithHashedPhoneNumber

voidInitiateOnDeviceConversionMeasurementWithHashedPhoneNumber(std::vector<unsignedchar>hashed_phone_number)

Initiates on-device conversion measurement given a SHA256-hashed phone number in E.164 format.

Requires dependency GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a no-op.

Details
Parameters
hashed_phone_number
UTF8-encoded user phone number in E.164 format and then hashed according to the instructions athttps://firebase.google.com/docs/tutorials/ads-ios-on-device-measurement/step-3.

InitiateOnDeviceConversionMeasurementWithPhoneNumber

voidInitiateOnDeviceConversionMeasurementWithPhoneNumber(constchar*phone_number)

Initiates on-device conversion measurement given a phone number in E.164 format on iOS (no-op on Android).

On iOS, requires dependency GoogleAppMeasurementOnDeviceConversion to be linked in, otherwise it is a no-op.

Details
Parameters
phone_number
User phone number. Must be in E.164 format, which means it must be limited to a maximum of 15 digits and must include a plus sign (+) prefix and country code with no dashes, parentheses, or spaces.

IsDesktopInitialized

boolIsDesktopInitialized()

Returns whether the desktop Analytics SDK is initialized.

Returns true if the Analytics SDK is initialized, false otherwise. The method only works on windows and is a NO-OP on iOS and Android.

LogEvent

voidLogEvent(constchar*name,constchar*parameter_name,constchar*parameter_value)

Log an event with one string parameter.

See also:LogEvent(const char*, const Parameter*, size_t)

Details
Parameters
name
Name of the event to log. Should contain 1 to 40 alphanumeric characters or underscores. The name must start with an alphabetic character. Some event names are reserved. SeeAnalytics Events (event_names.h) for the list of reserved event names. The "firebase_" prefix is reserved and should not be used. Note that event names are case-sensitive and that logging two events whose names differ only in case will result in two distinct events.
parameter_name
Name of the parameter to log. For more information, seeParameter.
parameter_value
Value of the parameter to log.

LogEvent

voidLogEvent(constchar*name,constchar*parameter_name,constdoubleparameter_value)

Log an event with one float parameter.

See also:LogEvent(const char*, const Parameter*, size_t)

Details
Parameters
name
Name of the event to log. Should contain 1 to 40 alphanumeric characters or underscores. The name must start with an alphabetic character. Some event names are reserved. SeeAnalytics Events (event_names.h) for the list of reserved event names. The "firebase_" prefix is reserved and should not be used. Note that event names are case-sensitive and that logging two events whose names differ only in case will result in two distinct events.
parameter_name
Name of the parameter to log. For more information, seeParameter.
parameter_value
Value of the parameter to log.

LogEvent

voidLogEvent(constchar*name,constchar*parameter_name,constint64_tparameter_value)

Log an event with one 64-bit integer parameter.

See also:LogEvent(const char*, const Parameter*, size_t)

Details
Parameters
name
Name of the event to log. Should contain 1 to 40 alphanumeric characters or underscores. The name must start with an alphabetic character. Some event names are reserved. SeeAnalytics Events (event_names.h) for the list of reserved event names. The "firebase_" prefix is reserved and should not be used. Note that event names are case-sensitive and that logging two events whose names differ only in case will result in two distinct events.
parameter_name
Name of the parameter to log. For more information, seeParameter.
parameter_value
Value of the parameter to log.

LogEvent

voidLogEvent(constchar*name,constchar*parameter_name,constintparameter_value)

Log an event with one integer parameter (stored as a 64-bit integer).

See also:LogEvent(const char*, const Parameter*, size_t)

Details
Parameters
name
Name of the event to log. Should contain 1 to 40 alphanumeric characters or underscores. The name must start with an alphabetic character. Some event names are reserved. SeeAnalytics Events (event_names.h) for the list of reserved event names. The "firebase_" prefix is reserved and should not be used. Note that event names are case-sensitive and that logging two events whose names differ only in case will result in two distinct events.
parameter_name
Name of the parameter to log. For more information, seeParameter.
parameter_value
Value of the parameter to log.

LogEvent

voidLogEvent(constchar*name)

Log an event with no parameters.

See also:LogEvent(const char*, const Parameter*, size_t)

Details
Parameters
name
Name of the event to log. Should contain 1 to 40 alphanumeric characters or underscores. The name must start with an alphabetic character. Some event names are reserved. SeeAnalytics Events (event_names.h) for the list of reserved event names. The "firebase_" prefix is reserved and should not be used. Note that event names are case-sensitive and that logging two events whose names differ only in case will result in two distinct events.

LogEvent

voidLogEvent(constchar*name,constParameter*parameters,size_tnumber_of_parameters)

Log an event with associated parameters.

An Event is an important occurrence in your app that you want to measure. You can report up to 500 different types of events per app and you can associate up to 25 unique parameters with each Event type.

Some common events are documented inAnalytics Events (event_names.h), but you may also choose to specify custom event types that are associated with your specific app.

Details
Parameters
name
Name of the event to log. Should contain 1 to 40 alphanumeric characters or underscores. The name must start with an alphabetic character. Some event names are reserved. SeeAnalytics Events (event_names.h) for the list of reserved event names. The "firebase_" prefix is reserved and should not be used. Note that event names are case-sensitive and that logging two events whose names differ only in case will result in two distinct events.
parameters
Array ofParameter structures.
number_of_parameters
Number of elements in the parameters array.

LogEvent

voidLogEvent(constchar*name,conststd::vector<Parameter>&parameters)

Log an event with associated parameters.

An Event is an important occurrence in your app that you want to measure. You can report up to 500 different types of events per app and you can associate up to 25 unique parameters with each Event type.

Some common events are documented inAnalytics Events (event_names.h), but you may also choose to specify custom event types that are associated with your specific app.

Details
Parameters
name
Name of the event to log. Should contain 1 to 40 alphanumeric characters or underscores. The name must start with an alphabetic character. Some event names are reserved. SeeAnalytics Events (event_names.h) for the list of reserved event names. The "firebase_" prefix is reserved and should not be used. Note that event names are case-sensitive and that logging two events whose names differ only in case will result in two distinct events.
parameters
Vector ofParameter structures.

NotifyAppLifecycleChange

voidNotifyAppLifecycleChange(AppLifecycleStatestate)

Notifies the current state of the app's lifecycle.

This method is used to notify the Analytics SDK about the current state of the app's lifecycle. The Analytics SDK will use this information to log events, update user properties, upload data, etc. The method only works on windows and is a NO-OP on iOS and Android.

kTermination is used to indicate that the app is about to be terminated. The caller will be blocked until all pending data is uploaded or an error occurs. The caller must ensure the OS does not terminate background threads before the call returns. Currently only works for Windows Desktop.

Details
Parameters
state
The current state of the app's lifecycle.

ResetAnalyticsData

voidResetAnalyticsData()

Clears all analytics data for this app from the device and resets the app instance id.

SetAnalyticsCollectionEnabled

voidSetAnalyticsCollectionEnabled(boolenabled)

Sets whether analytics collection is enabled for this app on this device.

This setting is persisted across app sessions. By default it is enabled.

Details
Parameters
enabled
true to enable analytics collection, false to disable.

SetConsent

voidSetConsent(conststd::map<ConsentType,ConsentStatus>&consent_settings)

Sets the applicable end user consent state (e.g., for device identifiers) for this app on this device.

Use the consent map to specify individual consent type values. Settings are persisted across app sessions. By default consent types are set to "granted".

SetDefaultEventParameters

voidSetDefaultEventParameters(constParameter*parameters,size_tnumber_of_parameters)

Adds parameters that will be set on every event logged from the SDK.

Adds parameters that will be set on every event logged from the SDK, including automatic ones. The values passed in the parameters bundle will be added to the map of default event parameters. These parameters persist across app runs. They are of lower precedence than event parameters, so if an event parameter and a parameter set using this API have the same name, the value of the event parameter will be used. The same limitations on event parameters apply to default event parameters.

Details
Parameters
parameters
Array ofParameter structures.
number_of_parameters
Number of elements in the parameters array.

SetDefaultEventParameters

voidSetDefaultEventParameters(conststd::vector<Parameter>&parameters)

Adds parameters that will be set on every event logged from the SDK.

Adds parameters that will be set on every event logged from the SDK, including automatic ones. The values passed in the parameters bundle will be added to the map of default event parameters. These parameters persist across app runs. They are of lower precedence than event parameters, so if an event parameter and a parameter set using this API have the same name, the value of the event parameter will be used. The same limitations on event parameters apply to default event parameters.

Details
Parameters
parameters
reference to vector ofParameter structures.

SetDesktopDebugMode

voidSetDesktopDebugMode(boolenabled)

Sets whether desktop debug mode is enabled.

This methods enables desktop debug mode for the analytics SDK. The method only works on windows and is a NO-OP on iOS and Android.

Details
Parameters
enabled
A flag that enables or disables debug mode.

SetLogCallback

voidSetLogCallback(constLogCallback&callback)

Allows the passing of a callback to be used when the SDK logs any messages regarding its behaviour.

The callback must be thread-safe.

Details
Parameters
callback
The callback to use. Must be thread-safe.

SetSessionTimeoutDuration

voidSetSessionTimeoutDuration(int64_tmilliseconds)

Sets the duration of inactivity that terminates the current session.

Note: The default value is 1800000 (30 minutes).

Details
Parameters
milliseconds
The duration of inactivity that terminates the current session.

SetUserId

voidSetUserId(constchar*user_id)

Sets the user ID property.

This feature must be used in accordance withGoogle's Privacy Policy

Details
Parameters
user_id
The user ID associated with the user of this app on this device. The user ID must be non-empty and no more than 256 characters long. Setting user_id to NULL or nullptr removes the user ID.

SetUserProperty

voidSetUserProperty(constchar*name,constchar*property)

Set a user property to the given value.

Properties associated with a user allow a developer to segment users into groups that are useful to their application. Up to 25 properties can be associated with a user.

Suggested property names are listedAnalytics User Properties (user_property_names.h) but you're not limited to this set. For example, the "gamertype" property could be used to store the type of player where a range of values could be "casual", "mid_core", or "core".

Details
Parameters
name
Name of the user property to set. This must be a combination of letters and digits (matching the regular expression [a-zA-Z0-9] between 1 and 40 characters long starting with a letter [a-zA-Z] character.
property
Value to set the user property to. Set this argument to NULL or nullptr to remove the user property. The value can be between 1 to 100 characters long.

Terminate

voidTerminate()

Terminate the Analytics API.

Cleans up resources associated with the API.

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-01-21 UTC.