Google Analytics for Firebase 觸發條件
Google Analytics for Firebase 提供事件報表,協助您瞭解使用者與應用程式的互動方式。您可以透過 Cloud Run 函式存取從 Apple 和 Android 裝置記錄的轉換事件,並根據這些事件觸發函式。
事件類型
Google Analytics for Firebase 會觸發 log
事件。這是一種強大的事件類型,因為使用者在應用程式中採取的任何動作都可以記錄下來,並觸發函式。
事件類型 | 觸發條件 |
---|---|
providers/google.firebase.analytics/eventTypes/event.log
|
當系統記錄轉換事件時觸發。 |
Cloud Run 函式可回應 Google Analytics for Firebase 轉換事件的記錄。舉例來說,如果使用者進行應用程式內購買交易,系統會記錄 in_app_purchase
轉換事件,並可供 Cloud Run 函式使用。
事件結構
這個觸發條件會使用類似下列事件的事件叫用函式:
{ "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 } }
您可以在 userDim
屬性中找到使用者資訊,例如應用程式資訊或裝置資訊。您可以在 eventDim
陣列中找到記錄事件的相關資訊。該陣列包含的物件包括 name
欄位,可保留轉換事件名稱 (例如 in_app_purchase
)。在 Google Analytics for Firebase 中設定的自訂欄位也會顯示在這裡。
程式碼範例
請使用以下程式碼片段處理這項回應:
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); }
部署函式
如要部署函式,請指定事件類型以及您已在其中設定 Firebase 驗證的專案。在控制台中,您會看到「事件類型」欄位,其中包含 log
(唯一選項) 和「記錄事件名稱」欄位,後者是會觸發函式的轉換事件。
在指令列上,您必須使用特定字串來指定這些參數。下列 Google Cloud CLI 指令會部署函式,在使用者進行應用程式內購時觸發:
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
引數 | 說明 |
---|---|
FUNCTION_NAME |
您要部署的 Cloud Run 函式註冊名稱。這可以是原始碼中的函式名稱,也可以是任意字串。如果 FUNCTION_NAME 是任意字串,則必須加入 --entry-point 旗標。 |
--entry-point ENTRY_POINT |
原始碼中函式或類別的名稱。選用,除非您未使用 FUNCTION_NAME 指定要於部署期間執行的原始碼中的函式。在這種情況下,您必須使用 --entry-point 提供可執行函式的名稱。 |
--trigger-event NAME |
函式想接收之事件類型的名稱。對於 Google Analytics for Firebase,這一值一律為 providers/google.firebase.analytics/eventTypes/event.log. |
--trigger-resource NAME |
完整的 Google Analytics 事件名稱,包括專案資訊。格式應如下所示:
projects/YOUR_PROJECT_ID/events/CONVERSION_EVENT_NAME
|
--runtime RUNTIME |
您使用的執行階段名稱。如需完整清單,請參閱 gcloud 參考資料。 |