更新
这是由谷歌修复的bug引起的,发布版本为4.5 - Google Play Services 7。0(2015年5月1日)"。使用Google Play Services 7.3或更高版本时,应该可以按预期使用完整网址调用setCampaignParametersFromUrl()
。
原始问题
我在Android应用中使用Google Analytics V4。在启动时,我向Google Analytics发送了一个屏幕视图点击,并通过调用HitBuilders.ScreenViewBuilder来设置我的setCampaignParamsFromUrl()
上的广告系列参数:
String url = "http://example.com/?referrer=utm_source%3Down-build%26utm_campaign%3Dinternal-testing";
builder.setCampaignParamsFromUrl(url);
这似乎有效,因为我可以看到该广告系列包含在Google Analytics的日志中:
V/GAV4﹕ Thread[GAThread,5,main]: Sending hit to service ..., cn=internal-testing...
但是,当我第二天在Google Analytics网络界面查看我的数据时,此广告系列不会显示。我只有广告系列用户"(未设置)"。
我已卸载我的应用,清除了广告ID并重新安装了应用,我在Google Analytics网络界面中将此安装视为新用户,因此我知道数据已发送到那里。但我使用的广告系列并没有显示出来。
我错误地使用setCampaignParamsFromUrl()
还是错过了其他内容?我是否必须配置我所拥有的广告系列,或者Google Analytics是否会自动选择以前未见过的新广告系列的值?
(至于为什么我没有收听安装推荐人事件,请参阅:What is the scope of the utm_campaign dimension in Google Analytics v4 on Android?)
答案 0 :(得分:3)
更新:issue 596已由Google修复,现在可以使用最新版Google Play服务(2015年5月1日发布的7.3)使用网址致电setCampaignParamsFromUrl()
< /强>
经过一些测试后,我设法弄清楚发生了什么以及传递给setCampaignParamsFromUrl()
的网址究竟应该具有什么格式。
TL; DR:使用Google Play URL Builder生成网址,但只将引荐来源字符串(referrer=
之后的部分)传递给setCampaignParamsFromUrl()
。
当调用setCampaignParamsFromUrl()
时,它会在“?”之后取出所有内容并在每个'&amp;'上拆分它获取它应发送给GA的所有参数列表。
对于每个参数,它然后拆分'='并将第一个子串作为参数,第二个作为该参数的值。
通常情况下效果很好,但它不适用于Google Play网址构建器生成的网址。在取消转义原始问题中使用的URL的参数字符串后,我们得到字符串:
referrer=utm_source=own-build&utm_campaign=internal-testing
拆分'&amp;'后我们得到以下两个字符串
1. referrer=utm_source=own-build
2. utm_campaign=internal-testing
第二个可以很好地处理utm_campaign
赋值“内部测试”,但第一个是有问题的。我们得到参数referrer
,其值为“utm_source”。由于referrer
不是有效的广告系列参数,因此不会向GA报告,因为utm_source是必需参数,因此GA会将此广告系列数据视为无效,并忽略同时报告的所有其他参数。
因此,要让setCampaignParamsFromUrl()
生效,您只能传入引荐来源字符串,即Google Play网址构建器生成的网址中referrer=
之后的所有字符串。因此,原始问题中使用的URL应为
utm_source%3Down-build%26utm_campaign%3Dinternal-testing
由于GA SDK会自动获取包,因此根本不需要URL构建器生成的URL的包名称。
由于此行为对我来说感觉像是一个错误,因此在GA错误跟踪器中报告为issue 596。
答案 1 :(得分:1)
尝试使用“广告系列开发指南”末尾提供的表单构建您的网址: https://developers.google.com/analytics/devguides/collection/android/v4/campaigns
另外,请确保您没有启用采样。如果您是从单个设备/模拟器进行测试,并且启用了采样,则可能会忽略您的广告系列数据。