我已经阅读了GoogleAnalytics v2网站上的文档(我基本上已经阅读了https://developers.google.com/analytics/devguides/的所有页面)但是找不到足够准确的回答我的问题。它缺少或与版本1文档混合。
我知道使用EasyTracker,您可以设置timeout_session参数。但我不想使用EasyTracker,我想在我的代码中的某个时刻显式停止会话。 (没有设置超时)
我用以下内容打开我的应用程序时启动会话:
mTracker.setStartSession(true);
并想知道是否打电话
mTracker.setStartSession(false);
明确地停止了它。
非常感谢任何帮助或指向更好的教程/文档。
答案 0 :(得分:6)
<强>概述强>
所以我花了一些时间浏览Measurement Protocol以及浏览LogCat中的调试日志。当手机上的GA'发送'一堆点击时,每个点击似乎在日志中都有一个相应的HTTP请求,开头是:
GET /collect?...
后面跟着一堆parameters来定义点击的类型(例如,事件,社交,电子商务)和一些关于应用的基本信息(例如app id,tracking id,timestamp)。< / p>
这是我学到的东西:
setStartSession(false)
不结束会话。
我是如何发现的
正如我之前所说,每次击中都代表某种行为。但是,会话开始或会话结束不被视为命中。它们只是添加到最新命中的附加数据,它告诉GA将新会话中的未来命中分组。
因此,如果您sendEvent(...)
然后setStartSession(true)
,然后dispatch()
,您会在日志中看到一个描述 的事件参数&sc=start
,用于描述新会话的开始。
然后我尝试使用setStartSession(false)
执行上述操作,但我没有注意到其他&sc
参数。它应该是&sc=end
,如here所述。
潜在的黑客
跟踪器有一个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
来停用自动会话控制。
我还上传了my project here,如果您想尝试浏览日志并比较点击次数。确保您更新了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
答案 1 :(得分:1)
在GA v3中,要手动启动或结束会话,请使用跟踪器的会话控制参数,如下所示:
开始新会话。此跟踪器的下一个命中将是新会话中的第一个。
[tracker set:kGAISessionControl value:@"start"];
结束会话。此跟踪器的下一个命中将是当前会话中的最后一个。
[tracker set:kGAISessionControl value:@"end"];
此信息可从以下链接获得: https://developers.google.com/analytics/devguides/collection/ios/v3/sessions
答案 2 :(得分:0)
在GoogleAnalytics v2中,他们有新的方式来启动/停止会话。
我之前没有看到您使用的mTracker.setStartSession(true)
和mTracker.setStartSession(false)
代码。
现在,如果您不想使用EasyTracker方法,可以通过以下方式开始新会话:
mTracker.startNewSession("UA-xxxxxxx-x", 20, this);
第一个输入为
(String uniqueGoogleAnalyticsKey, int autoDispatchTimer, Context this)
要阻止它:
tracker.stopSession();