Acionadores do Google Analytics para Firebase
O Google Analytics para Firebase fornece relatórios de eventos que ajudam a compreender como os utilizadores interagem com a sua app. Com as funções do Cloud Run, pode aceder a eventos de conversão que registou a partir de dispositivos Apple e Android e acionar funções com base nesses eventos.
Tipos de eventos
O Google Analytics para Firebase aciona o evento log
. Este é um tipo de evento avançado, uma vez que qualquer ação que um utilizador realize na sua app pode ser registada 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 é registado. |
As funções do Cloud Run podem responder ao registo de um evento de conversão do Google Analytics para Firebase. Por exemplo, se um utilizador fizer uma compra na app, é registado um evento de conversão in_app_purchase
que pode ser consumido pelas funções do Cloud Run.
Estrutura de eventos
Este acionador invoca a sua função com um evento semelhante ao apresentado 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 utilizador, como as informações da aplicação ou do dispositivo, podem ser encontradas na propriedade userDim
. Pode encontrar informações sobre o evento registado na matriz eventDim
. Os objetos contidos nessa matriz incluem um campo 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 aparecem aqui.
Exemplo de código
Use o seguinte fragmento para processar esta resposta:
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); }
Implementar a sua função
Para implementar a função, especifique o tipo de evento e o projeto no qual tem o Firebase Auth configurado. Na consola, existe um campo para Tipo de
evento que contém log
(a única opção) e Nome do evento de registo, que é o
evento de conversão que aciona a função.
Na linha de comandos, têm de ser usadas strings específicas para especificar estes parâmetros. O seguinte comando da CLI gcloud implementa uma função que é acionada quando um utilizador faz uma compra na app:
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 | Descrição |
---|---|
FUNCTION_NAME |
O nome registado da função do Cloud Run que está a implementar.
Pode ser o nome de uma função no seu código-fonte ou uma string arbitrária. Se FUNCTION_NAME for uma string arbitrária, tem de incluir a flag --entry-point .
|
--entry-point ENTRY_POINT |
O nome de uma função ou classe no seu código-fonte. Opcional, a menos que não tenha usado FUNCTION_NAME
para especificar a função no código fonte a ser executada durante a implementação. Nesse caso, tem de usar --entry-point para indicar o nome da função executável.
|
--trigger-event NAME |
O nome do tipo de evento que a função quer receber. Para o
Google Analytics para Firebase, este valor é sempre
providers/google.firebase.analytics/eventTypes/event.log.
|
--trigger-resource NAME |
O nome do evento do Google Analytics totalmente qualificado, incluindo as informações do seu projeto. Deve ter o seguinte formato:
projects/YOUR_PROJECT_ID/events/CONVERSION_EVENT_NAME
|
--runtime RUNTIME |
O nome do tempo de execução que está a usar. Para ver uma lista completa, consulte a
gcloud referência.
|