更新
这是由 bug 引起的Google 已在“发布版本 4.5 - Google Play 服务 7.3(2015 年 5 月 1 日)”中修复。使用 Google Play Services 7.3 或更高版本时,应该可以按预期使用完整 URL 调用 setCampaignParametersFromUrl()
。
原始问题
我在我的 Android 应用程序中使用 Google Analytics V4。启动时,我向 Google Analytics(分析)发送屏幕浏览命中,并在我的 HitBuilders.ScreenViewBuilder 上设置 Activity 参数调用setCampaignParamsFromUrl()
像这样:
String url = "http://example.com/?referrer=utm_source%3Down-build%26utm_campaign%3Dinternal-testing";
builder.setCampaignParamsFromUrl(url);
这似乎有效,因为我可以看到该 Activity 包含在来自 Google Analytics 的日志中:
V/GAV4﹕ Thread[GAThread,5,main]: Sending hit to service ..., cn=internal-testing...
但是,当我第二天在 Google Analytics(分析)网络界面上查看我的数据时,这个 Activity 并没有出现。我只有使用广告系列“(未设置)”的用户。
我卸载了我的应用程序,清除了广告 ID 并重新安装了该应用程序,我在 Google Analytics(分析)网络界面中将此安装视为新用户,因此我知道数据已发送到那里。但是我使用的 Activity 没有显示。
我是在错误地使用 setCampaignParamsFromUrl()
还是错过了其他东西?我是否必须在某处配置我的广告系列,或者 Google Analytics 是否应该自动选择它以前没有看到的值作为新广告系列?
(至于为什么我没有监听 install referrer 事件见:What is the scope of the utm_campaign dimension in Google Analytics v4 on Android?)
最佳答案
更新:issue 596已被 Google 修复,现在可以在使用最新版本的 Google Play 服务(2015 年 5 月 1 日发布的 7.3)时使用 URL 调用 setCampaignParamsFromUrl()
经过一些测试后,我设法弄清楚发生了什么以及 URL 传递给 setCampaignParamsFromUrl()
的确切格式。应该有。
TL;DR:使用 Google Play URL Builder 生成一个 URL ,但仅将引用字符串(referrer=
之后的部分)传递给 setCampaignParamsFromUrl()
。
当 setCampaignParamsFromUrl()
被调用时,它首先获取 '?' 之后的所有内容并将其拆分为每个“&”以获得应发送给 GA 的所有参数的列表。
对于每个参数,它然后根据“=”进行拆分,并将第一个子字符串作为参数,将第二个子字符串作为该参数的值。
通常这很有效,但不适用于 Google Play 网址构建器生成的网址。在对原始问题中使用的 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
不是有效的 Activity 参数,因此不会向 GA 报告,并且由于 utm_source 是必需参数,GA 会将此 Activity 数据视为无效并忽略同时报告的所有其他参数。
因此,要使 setCampaignParamsFromUrl()
正常工作,您可以仅传入引用字符串,即 Google Play URL Builder 生成的 URL 中 referrer=
之后的所有内容.所以原题中使用的URL应该是
utm_source%3Down-build%26utm_campaign%3Dinternal-testing
作为 URL 构建器生成的 URL 一部分的包名称根本不需要,因为 GA SDK 会自动选择包。
由于这种行为对我来说感觉像是一个错误,因此已将其报告为 issue 596在 GA 错误跟踪器中。
关于android - 如何使用 setCampaignParamsFromUrl() 通过 Google Analytics 设置广告系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28932236/