android - 如何使用 setCampaignParamsFromUrl() 通过 Google Analytics 设置广告系列

标签 android google-analytics google-analytics-firebase

更新

这是由 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/

相关文章:

android - 由于缺少 keystore.properties 文件,Gradle 构建失败

android - Android 上的 Google Analytics 给出平均 session 持续时间 : 00:00:00

Java NIO FileChannel - 从 Android TUN 网络接口(interface)读取空值

android - 如何实现Android的联系人列表滚动索引效果?

google-analytics - `fullVisitorId` => clientId,一对多映射?

javascript - 如何使用其插件和通用 Google Analytics 跟踪 mediaelement.js 上的事件

google-analytics - 将 Google Analytics 事件日志链接到唯一的 session ID

android - 在 Android App 中从 Google Tag Manager 获取 Google Analytics Content Experiment 参数

google-analytics - 按页面路径过滤年龄范围和性别

java - 使用 ActiveAndroid 的带有 DATE 变量的 Where 子句