Overview
所以我花了一些时间浏览测量协议 https://developers.google.com/analytics/devguides/collection/protocol/v1/以及查看 LogCat 中的调试日志。当您手机上的 GA“发送”一堆点击时,每个点击似乎在日志中都有一个相应的 HTTP 请求,开头为:
GET /collect?...
接下来是一堆参数 https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters定义点击类型(例如事件、社交、电子商务)和有关应用程序的一些基本信息(例如应用程序 ID、跟踪 ID、时间戳)。
这是我学到的:
setStartSession(false)
does not结束会话。
我是如何发现它的
正如我之前所说,每次点击都代表某种类型的动作。但是,会话开始或会话结束不被视为点击。它们只是添加到最近的热门告诉 GA 将未来的点击分组到新的会话中。
所以如果你sendEvent(...)
进而setStartSession(true)
, 进而dispatch()
,您将在描述该事件的日志中看到一个命中with一个附加参数&sc=start
描述新会话的开始。
然后我尝试使用以上方法进行操作setStartSession(false)
我没有注意到额外的&sc
范围。本来应该是&sc=end
,如上所述here https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#session.
潜在的黑客攻击
追踪器有一个send(...)
方法似乎允许您通过指定必要的参数来发送自定义命中。经过一番尝试和错误,以下成功创建了一个事件and如上所述附加会话结束参数。
Map<String, String> data;
data = EasyTracker.getTracker().constructEvent("Test", "Test", "Test", 0L);
data.put("sessionControl", "end");
EasyTracker.getTracker().send("event", data);
因此从理论上讲,每次您想要结束会话时,您都可以创建一个虚拟事件(如上所示),添加sessionControl
参数和调度。从日志来看,它似乎工作得很好,但我还没有在我的 GA 仪表板上验证这一点。
并确保通过设置禁用自动会话控制ga_sessionTimeout
to -1
在你的analytics.xml
file.
我也上传了我的项目在这里 https://github.com/gautamjain/GA-session-test,如果您想尝试查看日志并比较点击次数。请务必更新您的 GA 跟踪 ID。希望这可以帮助!
My Logs
开始会话 + 测试事件、调度
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
结束会话 + 测试活动,调度
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
结束会话黑客 + 测试事件、调度
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