Acionadores do Google Analytics para Firebase

O Google Analytics para Firebase fornece relatórios de evento que ajudam a entender como usuários interagem com o app. Com o Cloud Functions, é possível acessar eventos de conversão registrados e acionar funções com base nesses eventos.

Somente eventos de conversão são compatíveis com o Cloud Functions. Especifique quais são os eventos de conversão na guia Eventos do painel Analytics do Console do Firebase.

Tipos de evento

O Google Analytics para Firebase aciona o evento log. Esse é um tipo de evento eficiente, porque qualquer ação que um usuário execute no seu aplicativo pode gerar um registro e por sua vez acionar uma função.

Tipo de evento Acionador
providers/google.firebase.analytics/eventTypes/event.log Acionado quando um evento de conversão é registrado.

O Cloud Functions pode responder ao registro de um evento de conversão do Google Analytics para Firebase. Por exemplo, se um usuário fizer uma compra no aplicativo, um evento de conversão in_app_purchase será registrado e poderá ser consumido pelo Cloud Functions.

Estrutura do evento

Esse acionador invoca sua função com um evento semelhante ao mostrado abaixo:

{
    "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
    }
}

As informações do usuário, como informações do aplicativo ou do dispositivo, podem ser encontradas na propriedade userDim. As informações sobre o evento registrado podem ser encontradas na matriz eventDim. Entre os objetos contidos nessa matriz está um campo de name que contém o nome do evento de conversão (como in_app_purchase). Os campos personalizados configurados no Google Analytics para Firebase também são exibidos aqui.

Amostra de código

Use o snippet a seguir para processar esta resposta:

Node.js

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

  const [analyticsEvent] = event.data.eventDim;
  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
}

Como implantar a função

Para implantar a função, especifique o tipo de evento e o projeto em que o Firebase Auth está configurado. No console, existe um campo para Tipo de evento que contém log, a única opção, e Nome do evento de registro, que é o evento de conversão que acionará a função.

Na linha de comando, strings específicas precisam ser usadas para especificar esses parâmetros. O seguinte comando gcloud implanta uma função acionada quando um usuário faz uma compra no aplicativo:

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 Descrição
--trigger-event NAME O nome do tipo de evento que a função quer receber. Para o Google Analytics para Firebase, ele sempre é providers/google.firebase.analytics/eventTypes/event.log.
--trigger-resource NAME O nome totalmente qualificado do evento do Google Analytics, inclusive as informações do projeto. Isto deve assumir a forma: projects/YOUR_PROJECT_ID/events/CONVERSION_EVENT_NAME
--runtime RUNTIME O nome do ambiente de execução que você está usando. Para uma lista completa, consulte a referência do gcloud.