android - 如何在没有 EasyTracker 的情况下停止 android 版 Google 移动分析 v2 中的 session

标签 android analytics

我已经阅读了 GoogleAnalytics v2 网站上的文档(我基本上已经阅读了 https://developers.google.com/analytics/devguides/ 中的所有页面)但是找不到足够准确的答案来回答我的问题。它丢失或与版本 1 文档混合。

我知道使用 EasyTracker,您可以设置一个 timeout_session 参数。但我不想使用 EasyTracker,我想在我的代码中的某个时刻明确停止 session 。 (不设置超时)

当我打开我的应用程序时,我开始了一个 session :

mTracker.setStartSession(true);

想知道是否打电话

mTracker.setStartSession(false);

明确地停止它。

如有任何帮助或指向更好的教程/文档,我们将不胜感激。

最佳答案

概览

所以我花了一些时间浏览 Measurement Protocol以及查看 LogCat 中的调试日志。当您手机上的 GA“发送”一堆点击时,每个点击似乎在日志中都有相应的 HTTP 请求,开头为:

GET /collect?...

然后是一堆parameters定义命中类型(例如事件、社交、电子商务)和有关应用的一些基本信息(例如应用 ID、跟踪 ID、时间戳)。

这是我学到的:

setStartSession(false) 结束 session 。


我是如何发现它的

正如我之前所说,每次点击都代表某种类型的操作。但是, session 开始或 session 结束不被视为点击。它们只是添加到最近点击的附加数据,告诉 GA 在新 session 中对 future 点击进行分组。

因此,如果您sendEvent(...) 然后是setStartSession(true),然后是dispatch(),您会看到日志中的一次命中描述了事件, 附加参数 &sc=start 描述了新 session 的开始。

然后我尝试使用 setStartSession(false) 执行上述操作,但我没有注意到额外的 &sc 参数。它应该是&sc=end,如here所述.


潜在的黑客攻击

跟踪器有一个send(...) 方法,它似乎允许您通过指定必要的参数来发送自定义命中。经过一些尝试和错误后,以下内容成功创建了一个事件如上所述附加了 session 结束参数。

Map<String, String> data;
data = EasyTracker.getTracker().constructEvent("Test", "Test", "Test", 0L);
data.put("sessionControl", "end");
EasyTracker.getTracker().send("event", data);

所以理论上,每次你想结束一个 session ,你可以一个虚拟事件(像上面那样),添加 sessionControl 参数,然后调度。从日志来看,它似乎运行良好,但我尚未在我的 GA 仪表板上验证这一点。

并确保通过在 analytics.xml 文件中将 ga_sessionTimeout 设置为 -1 来禁用自动 session 控制。

我还上传了my project here ,如果您想尝试查看日志并比较命中率。确保更新您的 GA 跟踪 ID。希望这对您有所帮助!


我的日志

开始 session +测试事件,调度

GET /collect?ul=en-us&ev=0&ht=1362779137510&sr=720x1184&a=0&sc=start&aid=com.example.com.example.sessiontest&ea=Test&cid=ae57a272-89b2-46ab-8c82-7acdb49c3669&ec=Test&av=1.0&v=1&t=event&el=Test&an=com.example.sessiontest&tid=UA-XXXXXXXX-X&_u=.sMC&_v=ma1b4&cd=com.example.com.example.sessiontest.MainActivity&qt=2788&z=48 HTTP/1.1

结束 session + 测试事件,调度

GET /collect?ul=en-us&ev=0&ht=1362779233499&sr=720x1184&a=0&aid=com.example.com.example.sessiontest&ea=Test&cid=ae57a272-89b2-46ab-8c82-7acdb49c3669&ec=Test&av=1.0&v=1&t=event&el=Test&an=com.example.sessiontest&tid=UA-XXXXXXXX-X&_u=.ssMMC&_v=ma1b4&cd=com.example.com.example.sessiontest.MainActivity&qt=3726&z=50 HTTP/1.1

结束 session Hack + 测试事件,调度

GET /collect?ul=en-us&ev=0&ht=1362779194381&sr=720x1184&a=0&sc=end&aid=com.example.com.example.sessiontest&ea=Test&cid=ae57a272-89b2-46ab-8c82-7acdb49c3669&ec=Test&av=1.0&v=1&t=event&el=Test&an=com.example.sessiontest&tid=UA-XXXXXXXX-X&_u=.ssyL&_v=ma1b4&cd=com.example.com.example.sessiontest.MainActivity&qt=3581&z=49 HTTP/1.1

关于android - 如何在没有 EasyTracker 的情况下停止 android 版 Google 移动分析 v2 中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13601916/

相关文章:

android - Android Studio中重复gradle属性错误

java - 从相同的源代码构建可以产生功能不同的可执行文件吗?

android - 在 Android NDK 18 上使用什么代替 STL_PORT

python - 即使有值,Matplotlib 绘图也显示为空白

wordpress - 在 wordpress 上跟踪内部用户

android - 成绩同步失败 : Unresolved dependencies

mysql - 使用 SQL 创建 WooCommerce 分析报告

SQL:比较列以获取精确匹配的集合

email - 控制 cron 作业复杂性的方法或软件系统?

Android 通知恢复 Activity