我已经阅读了 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/