Activadores de Google Analytics para Firebase

Google Analytics para Firebase proporciona informes de eventos que te ayudan a comprender la forma en que los usuarios interactúan con la aplicación. Cloud Functions te permite acceder a eventos de conversiones registrados y activar funciones basadas en ellos.

Cloud Functions solo admite eventos de conversión. Puedes especificar cuáles son eventos de conversión en la pestaña Eventos del panel Analytics de Firebase console.

Tipos de eventos

Google Analytics para Firebase activa el evento log. Este es un evento potente porque cualquier acción que realice un usuario en la aplicación puede registrarse 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.

Cloud Functions puede responder al registro de un evento de conversión de Google Analytics para Firebase. Por ejemplo, si un usuario realiza una compra directa desde la aplicación, se registra un evento de conversión in_app_purchase y Cloud Functions puede consumirlo.

Estructura de eventos

Este activador invoca tu función con un evento similar al que se muestra en el siguiente ejemplo:

{
    "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 encuentra en la propiedad userDim. La información sobre el evento registrado se puede encontrar en el arreglo eventDim. Los objetos contenidos en ese arreglo incluyen un campo name que contiene el nombre del evento de conversión (como in_app_purchase). Los campos personalizados configurados en Google Analytics para Firebase también aparecen aquí.

Muestra de código

Usa el siguiente fragmento para procesar esta respuesta:

Node.js 8/10

/**
 * Triggered by a Google Analytics for Firebase log event.
 *
 * @param {object} data The event payload.
 * @param {object} context The event metadata.
 */
exports.helloAnalytics = (data, context) => {
  const {resource} = context;
  console.log(`Function triggered by the following event: ${resource}`);

  const [analyticsEvent] = data.eventDim;
  console.log(`Name: ${analyticsEvent.name}`);
  console.log(`Timestamp: ${new Date(analyticsEvent.timestampMicros / 1000)}`);

  const userObj = data.userDim;
  console.log(`Device Model: ${userObj.deviceInfo.deviceModel}`);
  console.log(`Location: ${userObj.geoInfo.city}, ${userObj.geoInfo.country}`);
};

Node.js 6 (obsoleta)

/**
 * Triggered by a Google Analytics for Firebase log event.
 *
 * @param {!Object} event The Cloud Functions event.
 */
exports.helloAnalytics = event => {
  const resource = event.resource;
  console.log(`Function triggered by the following event: ${resource}`);

  const analyticsEvent = event.data.eventDim[0];
  console.log(`Name: ${analyticsEvent.name}`);
  console.log(`Timestamp: ${new Date(analyticsEvent.timestampMicros / 1000)}`);

  const userObj = event.data.userDim;
  console.log(`Device Model: ${userObj.deviceInfo.deviceModel}`);
  console.log(`Location: ${userObj.geoInfo.city}, ${userObj.geoInfo.country}`);
};

Python

from datetime import datetime
def hello_analytics(data, context):
    """ Triggered by a Google Analytics for Firebase log event.
     Args:
            data (dict): The event payload.
            context (google.cloud.functions.Context): Metadata for the event.
    """
    trigger_resource = context.resource
    print(f'Function triggered by the following event: {trigger_resource}')

    event = data["eventDim"][0]
    print(f'Name: {event["name"]}')

    event_timestamp = int(event["timestampMicros"][:-6])
    print(f'Timestamp: {datetime.utcfromtimestamp(event_timestamp)}')

    user_obj = data["userDim"]
    print(f'Device Model: {user_obj["deviceInfo"]["deviceModel"]}')

    geo_info = user_obj["geoInfo"]
    print(f'Location: {geo_info["city"]}, {geo_info["country"]}')

Go


// Package p contains a Google Analytics for Firebase Cloud Function.
package p

import (
	"context"
	"fmt"
	"log"

	"cloud.google.com/go/functions/metadata"
)

// AnalyticsEvent is the payload of an Analytics log event.
type AnalyticsEvent struct {
	EventDimensions []EventDimensions `json:"eventDim"`
	UserDimensions  interface{}       `json:"userDim"`
}

// EventDimensions holds Analytics event dimensions.
type EventDimensions struct {
	Name                    string      `json:"name"`
	Date                    string      `json:"date"`
	TimestampMicros         string      `json:"timestampMicros"`
	PreviousTimestampMicros string      `json:"previousTimestampMicros"`
	Params                  interface{} `json:"params"`
}

// HelloAnalytics handles Firebase Mobile Analytics log events.
func HelloAnalytics(ctx context.Context, e AnalyticsEvent) error {
	meta, err := metadata.FromContext(ctx)
	if err != nil {
		return fmt.Errorf("metadata.FromContext: %v", err)
	}
	log.Printf("Function triggered by Google Analytics event: %v", meta.Resource)
	log.Printf("%+v", e)
	return nil
}

Implementa la función

Para implementar la función, especifica el tipo de evento y el proyecto en el que tienes 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 strings específicas para especificar estos parámetros. El siguiente comando de gcloud implementa una función que se activa cuando un usuario realiza una compra directa desde la aplicación:

gcloud functions deploy YOUR_ANALYTICS_FUNCTION \
  --trigger-event providers/google.firebase.analytics/eventTypes/event.log \
  --trigger-resource projects/YOUR_PROJECT_ID/events/in_app_purchase \
  --runtime RUNTIME
Argumento Descripción
--trigger-event NAME Es el nombre del tipo de evento que la función desea recibir. Para Google Analytics para Firebase, esto siempre es providers/google.firebase.analytics/eventTypes/event.log.
--trigger-resource NAME El nombre completo del evento de Google Analytics, incluida la información del proyecto. Debe tener el siguiente formato: projects/YOUR_PROJECT_ID/events/CONVERSION_EVENT_NAME
--runtime RUNTIME El nombre del entorno de ejecución que usas. Para obtener una lista completa, consulta la referencia de gcloud.