Pemicu Google Analytics for Firebase
Google Analytics for Firebase menyediakan laporan peristiwa yang dapat membantu Anda memahami cara pengguna berinteraksi dengan aplikasi Anda. Dengan Cloud Run Functions, Anda dapat mengakses peristiwa konversi yang telah dicatat dalam log dari perangkat Apple dan Android serta memicu fungsi berdasarkan peristiwa tersebut.
Jenis peristiwa
Google Analytics for Firebase memicu peristiwa log. Ini adalah
jenis peristiwa yang efektif, karena setiap tindakan yang dilakukan pengguna di aplikasi Anda dapat
dicatat dalam log dan kemudian memicu suatu fungsi.
| Jenis Peristiwa | Pemicu |
|---|---|
providers/google.firebase.analytics/eventTypes/event.log
|
Dipicu saat peristiwa konversi dicatat dalam log. |
Cloud Run Functions dapat merespons
logging peristiwa konversi Google Analytics for Firebase. Misalnya, jika pengguna melakukan pembelian dalam aplikasi,
peristiwa konversi in_app_purchase akan dicatat dalam log
dan dapat digunakan oleh Cloud Run Functions.
Struktur peristiwa
Pemicu ini memanggil fungsi Anda dengan peristiwa yang mirip dengan yang ditampilkan di bawah ini:
{ "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 } }
Informasi pengguna, seperti informasi aplikasi atau informasi perangkat, dapat
ditemukan di properti userDim. Informasi tentang peristiwa yang dicatat dalam log
dapat ditemukan di array eventDim. Objek yang terdapat dalam array tersebut mencakup
kolom name yang menyimpan nama peristiwa konversi (seperti in_app_purchase).
Kolom kustom yang disiapkan di Google Analytics for Firebase
juga ditampilkan di sini.
Contoh kode
Gunakan cuplikan berikut untuk memproses respons ini:
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); }
Men-deploy fungsi Anda
Untuk men-deploy fungsi, tentukan jenis peristiwa dan project tempat Anda
mengonfigurasi Firebase Auth. Di konsol, ada kolom untuk Event Type yang berisi log—satu-satunya opsi—dan
Log Event Name, yang merupakan
atribut peristiwa konversi yang akan memicu fungsi tersebut.
Pada command line, string khusus harus digunakan untuk menetapkan parameter ini. Perintah Google Cloud CLI berikut men-deploy fungsi yang dipicu saat pengguna melakukan pembelian dalam aplikasi:
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
| Argumen | Deskripsi |
|---|---|
FUNCTION_NAME |
Nama fungsi Cloud Run yang terdaftar, yang sedang Anda deploy.
Nama ini dapat berupa nama fungsi dalam
kode sumber Anda, atau string arbitrer. Jika FUNCTION_NAME adalah
string arbitrer, Anda harus menyertakan flag
--entry-point.
|
--entry-point ENTRY_POINT |
Nama fungsi atau class dalam kode sumber Anda. Opsional, kecuali
jika Anda tidak menggunakan FUNCTION_NAME
untuk menentukan
fungsi dalam kode sumber yang akan dijalankan selama deployment. Dalam hal ini,
Anda harus menggunakan --entry-point untuk memberikan nama
fungsi yang dapat dieksekusi.
|
--trigger-event NAME |
Nama jenis peristiwa yang ingin diterima fungsi. Untuk
Google Analytics for Firebase, kolom ini selalu
providers/google.firebase.analytics/eventTypes/event.log.
|
--trigger-resource NAME |
Nama peristiwa Google Analytics yang sepenuhnya memenuhi syarat,
termasuk informasi project Anda. Formatnya adalah:
projects/YOUR_PROJECT_ID/events/CONVERSION_EVENT_NAME
|
--runtime RUNTIME |
Nama runtime yang Anda gunakan. Untuk mengetahui daftar lengkapnya,
lihat referensi gcloud.
|