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

p4u*_*144 11 android analytics

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

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

当我打开我的应用程序时,我开始一个会话:

mTracker.setStartSession(true);
Run Code Online (Sandbox Code Playgroud)

并且想知道是否打电话

mTracker.setStartSession(false);
Run Code Online (Sandbox Code Playgroud)

明确地停止了它.

任何帮助或指向更好的教程/文档将不胜感激.

Gau*_*tam 6

概观

因此,我花了一些时间浏览Measurement Protocol以及查看LogCat中的调试日志.当手机上的GA'发送'一堆点击时,每个点击似乎在日志中都有一个相应的HTTP请求,开头是:

GET /collect?...
Run Code Online (Sandbox Code Playgroud)

然后是一系列定义命中类型的参数(例如事件,社交,电子商务)和一些关于应用程序的基本信息(例如app id,tracking id,timestamp).

这是我学到的东西:

setStartSession(false)没有结束会话.


我是如何发现它的

正如我之前所说,每次击中都代表某种类型的动作.但是,会话开始或会话结束不被视为命中.它们只是添加到最新命中的附加数据,告诉GA将新会话中的未来命中分组.

因此,如果您sendEvent(...)和然后setStartSession(true),dispatch()您将在日志中看到描述该事件的ONE命中,附加&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);
Run Code Online (Sandbox Code Playgroud)

所以从理论上讲,每次你想要结束一个会话时,你都可以进行虚拟事件(如上所述),添加sessionControl参数和调度.从日志中看起来效果很好,但我还没有在我的GA仪表板上验证这一点.

并确保通过在文件中设置ga_sessionTimeout为禁用自动会话控制.-1analytics.xml

我还在这里上传了我的项目,如果你想尝试查看日志并比较命中.确保您更新了GA跟踪ID.希望这可以帮助!


我的日志

启动Session + Test Event,Dispatch

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
Run Code Online (Sandbox Code Playgroud)

结束会话+测试事件,调度

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
Run Code Online (Sandbox Code Playgroud)

结束会话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
Run Code Online (Sandbox Code Playgroud)


Lis*_*ien 1

在 GA v3 中,要手动启动或结束会话,请使用跟踪器的会话控制参数,如下所示:

开始新的会话。该跟踪器的下一次点击将是新会话中的第一个点击。

[tracker set:kGAISessionControl value:@"start"];
Run Code Online (Sandbox Code Playgroud)

结束会话。该跟踪器的下一次点击将是当前会话中的最后一次。

[tracker set:kGAISessionControl value:@"end"];
Run Code Online (Sandbox Code Playgroud)

此信息可通过以下链接获取: https://developers.google.com/analytics/devguides/collection/ios/v3/sessions