如何使用 setCampaignParamsFromUrl() 为 Google Analytics 设置活动

How can I set campaign with Google Analytics using setCampaignParamsFromUrl()

更新

这是由 Google 已在 "Release Version 4.5 - Google Play Services 7.3 (May 1, 2015)" 中修复的 bug 引起的。使用 Google Play Services 7.3 或更高版本时,应该可以按预期使用完整的 URL 调用 setCampaignParametersFromUrl()


原题

我在 Android 应用程序中使用 Google Analytics V4。启动时,我向 Google Analytics 发送屏幕浏览点击,然后在我的 HitBuilders.ScreenViewBuilder by calling setCampaignParamsFromUrl() 上设置广告系列参数,如下所示:

String url = "http://example.com/?referrer=utm_source%3Down-build%26utm_campaign%3Dinternal-testing";
builder.setCampaignParamsFromUrl(url); 

这似乎有效,因为我可以看到该活动包含在 Google 分析的日志中:

V/GAV4﹕ Thread[GAThread,5,main]: Sending hit to service ...,  cn=internal-testing...

然而,当我第二天在 Google Analytics 网络界面上查看我的数据时,此活动并未显示。我只有使用广告系列“(未设置)”的用户。

我卸载了我的应用程序,清除了广告 ID 并重新安装了该应用程序,我在 Google Analytics 网络界面中将此安装视为新用户,因此我知道数据已发送到那里。但是我使用的活动没有出现。

我是在错误地使用 setCampaignParamsFromUrl() 还是漏掉了什么?我是否必须在某处配置我的活动,或者 Google Analytics 是否应该自动选择它以前没有看到的值作为新活动?

(至于为什么我不听安装引荐来源事件见:

尝试使用营销活动开发指南末尾提供的表格构建您的 URL: https://developers.google.com/analytics/devguides/collection/android/v4/campaigns

此外,请确保您没有启用采样。如果您从单个 device/emulator 进行测试并且您启用了抽样,您的广告系列数据可能会被忽略。

更新:issue 596 已被 Google 修复,现在可以在使用最新版本时使用 URL 调用 setCampaignParamsFromUrl() Google Play 服务(2015 年 5 月 1 日发布的 7.3)

经过一些测试后,我设法弄清楚发生了什么,以及 URL 传递给 setCampaignParamsFromUrl() 的确切格式应该是什么。

TL;DR:使用 Google Play URL Builder 生成 URL,但仅将引用字符串(referrer= 之后的部分)传递给 setCampaignParamsFromUrl() .

当调用 setCampaignParamsFromUrl() 时,它会从“?”之后的所有内容开始。并将其拆分为每个“&”以获得应发送给 GA 的所有参数的列表。

对于每个参数,它然后在“=”上拆分,并将第一个子字符串作为参数,将第二个子字符串作为该参数的值。

通常这很好用,但它不适用于 Google Play URL 生成器生成的 URLs。在对原始问题中使用的 URL 的参数字符串进行反转义后,我们得到字符串:

referrer=utm_source=own-build&utm_campaign=internal-testing

在 '&' 上拆分后,我们得到以下两个字符串

1. referrer=utm_source=own-build
2. utm_campaign=internal-testing

第二个可以很好地处理,其中 utm_campaign 被分配值 "internal-testing",但第一个有问题。在那里我们得到参数 referrer 和值 "utm_source"。由于 referrer 不是有效的活动参数,因此不会向 GA 报告,并且由于 utm_source 是必需的参数,GA 会将此活动数据视为无效并忽略同时报告的所有其他参数。

因此,要使 setCampaignParamsFromUrl() 正常工作,您可以仅传入引用字符串,即 Google 生成的 URL 中 referrer= 之后的所有内容播放 URL 建设者。所以原题中使用的URL应该是

utm_source%3Down-build%26utm_campaign%3Dinternal-testing

URL 构建器生成的 URL 中的包名称根本不需要,因为 GA SDK 会自动选择包。

由于这种行为对我来说像是一个错误,因此在 GA 错误跟踪器中将其报告为 issue 596