概述
因此,我花了一些时间查看测量协议以及查看 LogCat 中的调试日志。当您手机上的 GA 发送大量点击时,每个点击似乎在日志中都有一个相应的 HTTP 请求,开头为:
GET /collect?...
后面是一组定义点击类型的参数(例如事件、社交、电子商务)和有关应用程序的一些基本信息(例如应用程序 ID、跟踪 ID、时间戳)。
这是我学到的:
setStartSession(false)
不结束会话。
我是如何发现它的
正如我之前所说,每次点击都代表某种类型的动作。但是,会话开始或会话结束不被视为命中。它们只是添加到最近命中的附加数据,告诉 GA 在新会话中对未来命中进行分组。
因此,如果您sendEvent(...)
然后setStartSession(true)
,然后dispatch()
,您将在日志中看到一个命中,该命中描述了该事件以及&sc=start
描述新会话开始的附加参数。
然后我尝试使用上述方法setStartSession(false)
,但没有注意到附加&sc
参数。应该如此,如此处&sc=end
所述。
潜在的黑客
跟踪器有一个send(...)
方法,它似乎允许您通过指定必要的参数来发送自定义命中。经过一些试验和错误,以下成功创建了一个事件并附加了如上所述的会话结束参数。
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
为来禁用自动会话控制。-1
analytics.xml
我还在这里上传了我的项目,如果您想尝试查看日志并比较点击量。确保更新您的 GA 跟踪 ID。希望这可以帮助!
我的日志
开始会话 + 测试事件,调度
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