使用 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

e714cd969fca4a4d

您可以提供任何昵称,并且系统会显示密钥值,以供您在调用中使用

如果您不确定如何访问 GA4,可以访问自己的 Firebase 项目,然后依次点击“项目设置” >集成 >Google Analytics,然后点击“管理”。此时应显示 Google Analytics 连接,您也可以直接从该处导航

73b4d77a57eddfba

收集 app_instance_id

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

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

下面将详细介绍这两种方法

  1. 使用 BigQuery Export

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

  • 登录 Firebase
  • 前往“项目设置”>集成 >BigQuery
  • 点击“在 BigQuery 中查看”数据集附近

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

63d061088b622961

  • 在 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

您需要填写以下字段

  • api_secret - 之前已在 GA4 上创建
  • firebase_app_id:要获取此 ID,您可以依次转到管理 >数据流 >选择您的直播。它应如下所示

19801c8e5cb29222

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

54cce53df64d697

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

16a8f531a3894021

填写完所有内容后,您应该会看到类似这样的内容,其中有一个“验证活动”按钮

475801f25c3caf26

达到此上限后,点击“验证事件”,该按钮会以橙色突出显示。它应该在下方显示消息,指明该事件是有效的,并且您现在应该会看到一个用于“SEND TO GA”(发送到 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 版 API,请务必遵循此处 列出的限制,这些限制应该在全面发布之前得到解决

您学到的内容

  • 如何收集合适的变量来进行 MP 调用
  • 如何发送和验证测试事件
  • 如何构建用于发送 MP 通话的脚本