使用 Measurement Protocol 向 GA4 发送应用事件

1. 简介

上次更新日期:2021 年 6 月 8 日

构建内容

在此 Codelab 中,您将学习如何使用 Measurement Protocol 将外部事件发送到 GA4。

此 Codelab 假定您已经有一个实现了 Google Analytics for Firebase 的应用。如果您想学习如何与 Google Analytics for Firebase 集成,请先参阅此 Codelab。如果您想了解如何使用 Firebase 构建应用,请参阅 Firebase Android Codelab - 构建友好型聊天

学习内容

  • 首次 MP 通话的步骤
  • 了解调用所需的参数
  • 发送并验证您的测试通话
  • 使用 Python 构建示例脚本以进行调用

所需条件

  • 您的 Android 或 iOS 应用
  • 任何可做出更改的 IDE
  • GA4 账号
  • 可选 - Python 开发环境(或 Colab

2. 收集必填字段

在 GA4 中创建 API 密钥

前往 GA4 并创建新的 API 密钥,具体方法为:依次点击管理 > 数据流 > 选择您的数据流 > Measurement Protocol > 创建

6e4afca63054d291

c9e9ccd2ffba98eb.png

e714cd969fca4a4d

您可以提供任何别名,并且 Secret 值将会显示出来,供您在调用中使用

如果您不确定如何访问 GA4,可以访问您的 Firebase 项目,然后依次前往“项目设置”>“集成”>“Google Analytics(分析”),然后点击“管理”。Google Analytics(分析)关联应该可见,您也可以直接从该关联处导航

73b4d77a57eddfba.png

收集 app_instance_id

您可以使用以下任一方法来收集 app_instance_id。

  1. 使用 BigQuery Export
  2. 在应用源代码中以原生方式获取

下文将详细介绍这两种方式。

  1. 使用 BigQuery Export

如果您启用了 BigQuery Export ,可以按照以下步骤操作

  • 登录 Firebase
  • 依次转到“项目设置”>“集成”>“BigQuery”
  • 点击数据集旁边的“在 BigQuery 中查看”

注意:在切换开关启用大约 24-48 小时后,数据集才可用

63d061088b622961.png

  • 在 BigQuery 中,您可以检查表中是否有 user_pseudo_id。这是您可以在调用中使用的 app_instance_id

4b1b80bdc2884581

  1. 在应用源代码中以原生方式提取

如果您的应用是使用 Java 构建的,那么您可以使用如下代码来检索 app_instance_id

 FirebaseAnalytics.getInstance(this).getAppInstanceId().addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
            if (task.isSuccessful()) {
                String user_pseudo_id = task.getResult();
            }
        }
    });

对于 Kotlin,您可以尝试以下操作

Thread {
   Firebase.analytics.appInstanceId.addOnSuccessListener { user_pseudo_id ->
       Log.d("Firebase", "user_pseudo_id using appInstanceId is $user_pseudo_id")
       /*
       Store the value to your server or do something with the retrieved id
        */
   }
}.start()

如果您有 iOS 应用,可以在 Swift 中使用以下代码

let user_pseudo_id = Analytics.appInstanceID()
print("user_pseudo_id = \(user_pseudo_id)")
/*
Store the value to your server or do something with the retrieved id
*/

以下是根据您的基础架构的更多链接

3. 构建调用

您可以使用 GA4 中的事件构建器构建示例调用。(这需要您登录并启用 Cookie)。确保将切换开关设置为“firebase”

fd78d961f3e48238.png

您需要填写以下字段

  • api_secret - 已在 GA4 上之前创建
  • firebase_app_id - 如需获取相关信息,您可以依次前往管理 > 数据流 > 选择您的数据流。它应如下所示

19801c8e5cb29222

  • app_instance_id - 您已检索此值
  • user_id 不是必需的。您可以暂时将其留空
  • 类别 - 从下拉菜单中选择“自定义”,然后输入您选择的任何事件名称(请勿使用任何自动收集的事件)。我们在这里使用的是“test_from_codelab”

54cce53df64d697

您也可以点击以下按钮,选择提供事件参数和/或用户属性

16a8f531a3894021

填写完所有内容后,您应该会看到如下所示的内容,以及用于“验证事件”的按钮

475801f25c3caf26

然后,点击 验证活动 (橙色突出显示的按钮)。下面应显示消息,指明事件有效,随后您会看到“SEND TO GA”按钮。此时,如果事件显示无效,该工具会告知您存在问题的确切字段,您可以修复该问题并重试

23e4e6800705b4aa

现在,您可以点击该按钮,它应该会向 GA4 发送测试事件

4.验证 GA4 中的事件

发送事件后,您可以前往 GA4 帐号并查看“实时”。您应该会看到

994b51ca46bb1973

事件可能需要大约 24 小时才能从实时视图传播到实际事件报告标签页,因此,如果您没立即在常规事件报告中看到此事件,无需担心!

如果您遇到问题或数据不一致,不妨点击此处查看 Measurement Protocol 的已知限制,这或许会有所帮助

5. 构建 Python 脚本

现在,您已对其进行测试,接下来可以查看 API 调用和事件载荷,以在 Python(或您选择的任何语言)中构建可以进行此调用的类似架构。然后,您可以按照所需频率安排此操作,并将其付诸应用。在这一部分,您可以使用您选择的任何支持 Python 的 IDE,或者直接使用 Google Colab 笔记本(无需在设备上安装任何应用)

再次参考 GA4 Event Builder,您会看到端点如下所示。

POST /mp/collect?firebase_app_id=XXXX&api_secret=XXXX 
HTTP/1.1
Host: www.google-analytics.com

事件载荷如下所示

{
  "app_instance_id": XXXX,
  "non_personalized_ads": false,
  "events": [
    {
      "name": "test_from_codelab",
      "params": {
        "test_param": "test_123"
      }
    }
  ]
}

你可以使用下面的内容将其翻译成 Python:

import requests
import json
url = "https://www.google-analytics.com/mp/collect?firebase_app_id=XXXX&api_secret=XXXX"
payload = {
  "app_instance_id": XXXX,
  "non_personalized_ads": False,
  "events": [
    {
      "name": "test_from_codelab",
      "params": {
        "test_param": "test_123"
      }
    }
  ]
}
r = requests.post(url,data=json.dumps(payload),verify=True)
print(r.status_code)

同样,使用正确的值执行此操作后,您应该会在 GA4 中看到事件实时反映。

6. 恭喜

恭喜!您已在 GA4 中成功使用了 Measurement Protocol。现在,您可以构建强大的解决方案架构,向 Google Analytics(分析)发送更有意义的数据,并改进您的营销和业务分析。为了充分利用这一点,我们还建议您关联到 Google Ads,并将这些事件作为转化导入。您可以参阅此 Codelab 中的第 6 步,获取详细说明。出于转化跟踪的目的,Google Ads 将仅显示与过去 60 天内从 Firebase SDK 收集的 IDFA 或设备 ID 相关联的数据。请注意,此 API 仍处于 Alpha 版阶段,请务必遵循此处 列出的限制,这些限制应在全面发布之前加以解决

您学到的内容

  • 如何收集正确的变量进行 MP 调用
  • 如何发送和验证测试事件
  • 如何构建脚本以发送 MP 调用