Trigger di Google Analytics for Firebase
Google Analytics for Firebase fornisce report sugli eventi che ti aiutano a capire come gli utenti interagiscono con la tua app. Con Cloud Run Functions, puoi accedere agli eventi di conversione che hai registrato da dispositivi Apple e Android e attivare le funzioni in base a questi eventi.
Tipi di evento
Google Analytics for Firebase attiva l'evento log. Si tratta di
un tipo di evento molto efficace, poiché qualsiasi azione intrapresa da un utente nella tua app può essere
registrata e, a sua volta, attivare una funzione.
| Tipo di evento | Trigger |
|---|---|
providers/google.firebase.analytics/eventTypes/event.log
|
Attivato quando viene registrato un evento di conversione. |
Cloud Run Functions può rispondere alla registrazione di un evento di conversione di Google Analytics for Firebase. Ad esempio, se un utente effettua un acquisto in-app, viene registrato un
evento di conversione in_app_purchase che può essere utilizzato da Cloud Run Functions.
Struttura dell'evento
Questo trigger richiama la funzione con un evento simile a quello mostrato di seguito:
{ "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 } }
Le informazioni sull'utente, come quelle sull'applicazione o sul dispositivo, sono disponibili nella proprietà userDim. Le informazioni sull'evento registrato sono disponibili nell'array eventDim. Gli oggetti contenuti in questo array
includono un campo name che contiene il nome dell'evento di conversione (ad esempio
in_app_purchase). Qui vengono visualizzati anche i campi personalizzati configurati in Google Analytics for Firebase.
Esempio di codice
Utilizza il seguente snippet per elaborare questa risposta:
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); }
Deployment della funzione
Per eseguire il deployment della funzione, specifica il tipo di evento e il progetto in cui hai configurato Firebase Authentication. Nella console c'è un campo per il Tipo di
evento che contiene log, l'unica opzione, e il Nome evento di log, ovvero
l'evento di conversione che attiverà la funzione.
Nella riga di comando, per specificare questi parametri devono essere utilizzate stringhe specifiche. Il seguente comando Google Cloud CLI esegue il deployment di una funzione che viene attivata quando un utente effettua un acquisto in-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
| Argomento | Descrizione |
|---|---|
FUNCTION_NAME |
Il nome registrato della funzione Cloud Run di cui stai eseguendo il deployment.
Può essere il nome di una funzione nel tuo codice sorgente o una stringa arbitraria. Se FUNCTION_NAME è una stringa arbitraria, devi includere il flag --entry-point.
|
--entry-point ENTRY_POINT |
Il nome di una funzione o di una classe nel codice sorgente. Facoltativo, a meno che non hai utilizzato FUNCTION_NAME per specificare la funzione nel codice sorgente da eseguire durante il deployment. In questo caso, devi utilizzare --entry-point per fornire il nome della funzione eseguibile.
|
--trigger-event NAME |
Il nome del tipo di evento che la funzione vuole ricevere. Per Google Analytics for Firebase, questo valore è sempre providers/google.firebase.analytics/eventTypes/event.log.
|
--trigger-resource NAME |
Il nome evento Google Analytics completo, incluse le informazioni sul progetto. Deve avere il seguente formato:
projects/YOUR_PROJECT_ID/events/CONVERSION_EVENT_NAME
|
--runtime RUNTIME |
Il nome del runtime che stai utilizzando. Per un elenco completo, consulta il riferimento gcloud.
|