Activadores de Google Analytics for Firebase
Google Analytics for Firebase proporciona informes de eventos para ayudarte a entender cómo interactúan los usuarios con tu aplicación. Con las funciones de Cloud Run, puedes acceder a los eventos de conversión que hayas registrado desde dispositivos Android o Apple y activar funciones basadas en esos eventos.
Tipos de eventos
Google Analytics for Firebase activa el evento log
. Se trata de un tipo de evento potente, ya que se puede registrar cualquier acción que realice un usuario en tu aplicación y, a su vez, activar una función.
Tipo de evento | Activador |
---|---|
providers/google.firebase.analytics/eventTypes/event.log
|
Se activa cuando se registra un evento de conversión. |
Las funciones de Cloud Run pueden responder al registro de un evento de conversión de Google Analytics for Firebase. Por ejemplo, si un usuario hace una compra en la aplicación, se registra un evento de conversión in_app_purchase
y las funciones de Cloud Run pueden usarlo.
Estructura de eventos
Este activador invoca tu función con un evento similar al que se muestra a continuación:
{ "eventDim": [ // Contains a single event { "date": "20090213", "name": "screen_view", "params": { "firebase_conversion": { "intValue": "1" }, "firebase_event_origin": { "stringValue": "auto" }, "firebase_previous_class": { "stringValue": "MainActivity" }, "firebase_previous_id": { "intValue": "1928209043426257906" }, "firebase_previous_screen": { "stringValue": "id-D-D" }, "firebase_screen": { "stringValue": "id-C-C" }, "firebase_screen_class": { "stringValue": "MainActivity" }, "firebase_screen_id": { "intValue": "1234567890000" } }, "previousTimestampMicros": "1234567890000", "timestampMicros": "1234567890000" } ], "userDim": { // A UserDimensions object } }
La información del usuario, como la información de la aplicación o del dispositivo, se puede encontrar en la propiedad userDim
. Puedes encontrar información sobre el evento registrado en la matriz eventDim
. Los objetos incluidos en esa matriz
incluyen un campo name
que contiene el nombre del evento de conversión (por ejemplo, in_app_purchase
). Los campos personalizados configurados en Google Analytics for Firebase también aparecen aquí.
Código de ejemplo
Usa el siguiente fragmento para procesar esta respuesta:
Node.js
Python
Go
C#
using CloudNative.CloudEvents; using Google.Cloud.Functions.Framework; using Google.Events.Protobuf.Firebase.Analytics.V1; using Microsoft.Extensions.Logging; using System; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace FirebaseAnalytics; public class Function : ICloudEventFunction<AnalyticsLogData> { private readonly ILogger _logger; public Function(ILogger<Function> logger) => _logger = logger; public Task HandleAsync(CloudEvent cloudEvent, AnalyticsLogData data, CancellationToken cancellationToken) { _logger.LogInformation("Event source: {source}", cloudEvent.Source); _logger.LogInformation("Event count: {count}", data.EventDim.Count); var firstEvent = data.EventDim.FirstOrDefault(); if (firstEvent is object) { _logger.LogInformation("First event name: {name}", firstEvent.Name); DateTimeOffset timestamp = DateTimeOffset.FromUnixTimeMilliseconds(firstEvent.TimestampMicros / 1000); _logger.LogInformation("First event timestamp: {timestamp:u}", timestamp); } var userObject = data.UserDim; if (userObject is object) { _logger.LogInformation("Device model: {device}", userObject.DeviceInfo?.DeviceModel); _logger.LogInformation("Location: {city}, {country}", userObject.GeoInfo?.City, userObject.GeoInfo.Country); } // In this example, we don't need to perform any asynchronous operations, so the // method doesn't need to be declared async. return Task.CompletedTask; } }
Ruby
PHP
use Google\CloudFunctions\CloudEvent; function firebaseAnalytics(CloudEvent $cloudevent): void { $log = fopen(getenv('LOGGER_OUTPUT') ?: 'php://stderr', 'wb'); $data = $cloudevent->getData(); fwrite($log, 'Function triggered by the following event:' . $data['resource'] . PHP_EOL); $analyticsEvent = $data['eventDim'][0]; $unixTime = $analyticsEvent['timestampMicros'] / 1000; fwrite($log, 'Name: ' . $analyticsEvent['name'] . PHP_EOL); fwrite($log, 'Timestamp: ' . gmdate("Y-m-d\TH:i:s\Z", $unixTime) . PHP_EOL); $userObj = $data['userDim']; fwrite($log, sprintf( 'Location: %s, %s' . PHP_EOL, $userObj['geoInfo']['city'], $userObj['geoInfo']['country'] )); fwrite($log, 'Device Model: %s' . $userObj['deviceInfo']['deviceModel'] . PHP_EOL); }
Desplegar una función
Para implementar la función, especifica el tipo de evento y el proyecto en el que hayas configurado Firebase Auth. En la consola, hay un campo para Tipo de evento que contiene log
(la única opción) y Nombre del evento de registro, que es el evento de conversión que activará la función.
En la línea de comandos, se deben usar cadenas específicas para especificar estos parámetros. El siguiente comando de la CLI de Google Cloud implementa una función que se activa cuando un usuario hace una compra en la aplicación:
gcloud functions deploy FUNCTION_NAME \ --no-gen2 \ --entry-point ENTRY_POINT \ --trigger-event providers/google.firebase.analytics/eventTypes/event.log \ --trigger-resource projects/YOUR_PROJECT_ID/events/in_app_purchase \ --runtime RUNTIME
Argumento | Descripción |
---|---|
FUNCTION_NAME |
Nombre registrado de la función de Cloud Run que vas a desplegar.
Puede ser el nombre de una función de tu código fuente o una cadena arbitraria. Si FUNCTION_NAME es una cadena arbitraria, debes incluir la marca --entry-point .
|
--entry-point ENTRY_POINT |
El nombre de una función o una clase en el código fuente. Opcional, a menos que no hayas usado FUNCTION_NAME
para especificar la función en el código fuente que se va a ejecutar durante la implementación. En ese caso, debes usar --entry-point para indicar el nombre de la función ejecutable.
|
--trigger-event NAME |
Nombre del tipo de evento que quiere recibir la función. En el caso de Google Analytics for Firebase, siempre es providers/google.firebase.analytics/eventTypes/event.log.
|
--trigger-resource NAME |
Nombre de evento de Google Analytics completo, incluida la información de su proyecto. Debe tener el siguiente formato:
projects/YOUR_PROJECT_ID/events/CONVERSION_EVENT_NAME
|
--runtime RUNTIME |
El nombre del tiempo de ejecución que estás usando. Para ver una lista completa, consulta la referencia de gcloud .
|