2

背景:

我正在将采集数据跟踪到移动应用程序。某些链接通过我的网站重定向到 App Store 或 Google Play 商店,Google Analytics 会在这些网站上收集有关这些重定向的数据。

该移动应用程序还利用了一项名为“App Clips”的新 iOS 功能,它基本上是一个无需用户通过商店下载即可打开的应用程序片段。当应用程序剪辑启动时,“中间人”重定向网站永远不会打开。

为了获得有关 Android 和 iOS 采集的连贯数据,我想page_view通过 Measurement Protocol 收集事件,直接从“App Clip”触发。

问题:

GA v4 测量协议 API 处于 alpha 阶段。文档中实际上缺少该page_view事件,但仍然可以发送它。

我想了解如何在请求中填充事件参数,以便发送“技术”和“采集”类别所需的数据。这至少意味着用户代理数据、确切的设备型号、活动、媒介和来源。

{
    "client_id": "<what_goes_here?>",
    "timestamp_micros": "1627192577008000",
    "non_personalized_ads": false,
    "events": [
        {
            "name": "page_view",
            "params": {
                "page_title": "App Clip",
                "language": "en-us",
                "page_location": "https://example.com/x?utm_campaign=my_campaign",
                "screen_resolution": "1170x2532",
                //"page_referrer": ""
                "page_path": "/x?utm_campaign=my_campaign"
            }
        }
    ]
}

我不想在 App Clip 中使用 Firebase SDK,原因有两个:

  1. 我希望 App Clip 是轻量级的,Apple 不鼓励使用 3rd 方库
  2. 我无法保证发送screen_view将呈现与page_view.
4

1 回答 1

0

客户端ID是指前端gtag脚本生成的google客户端ID。

例如,假设您有一个标签管理器或刚刚向您的网站添加了一个分析标签。这会在浏览器上生成一个 cookie(默认情况下是命名_ga_<ID>的 - 在设置分析属性时可以在其中检索 ID。注意:您可以轻松自定义 cookie 的名称)。此 cookie 包括客户端 ID。当您与后端 API 通信以触发事件时,您需要直接通过在 API 调用中包含 cookie 或通过 JS(不是 HttpOnly)读取 cookie 并将该值与其他参数一起发送来转发此值。

cookie 值看起来像GS1.2.163179xxxx.18.0.163179xxxx.0

然后提取客户端 ID 并将其添加到您的有效负载中。

在我们的 ruby​​/rails 代码中,我们使用

google_analytics_client_id = context[:controller].request.cookies[Settings.google_analytics_prefix]&.split('.')&.last(2)&.join('.')

然后您可以将其发送到测量协议。我们的代码看起来像

def event_payload(user:, event_name:, google_analytics_client_id:, event_params: {}, event_time:)
  {
    user_id: user.id.to_s,
    timestamp_micros: (event_time.to_f * 1_000_000).to_i,
    non_personalized_ads: false,
    user_properties: {
      your_property: { value: user.some_property },
    },
    client_id: google_analytics_client_id,
    events: [
      { name: event_name }.tap do |h|
        h[:params] = event_params if event_params.any?
      end,
    ],
  }
end

我不是 100% 确定这是有效的,因为我们似乎遇到了问题(它确实为用户创建了事件,但例如他们没有正确获得 UTM 属性),但可能与限制有关

于 2021-09-23T11:06:55.050 回答