如何在没有EasyTracker的情况下停止Google移动分析v2中的会话

时间:2012-11-28 09:35:25

标签: android analytics

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

我知道使用EasyTracker,您可以设置timeout_session参数。但我不想使用EasyTracker,我想在我的代码中的某个时刻显式停止会话。 (没有设置超时)

我用以下内容打开我的应用程序时启动会话:

mTracker.setStartSession(true);

并想知道是否打电话

mTracker.setStartSession(false);

明确地停止了它。

非常感谢任何帮助或指向更好的教程/文档。

3 个答案:

答案 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();