11

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

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

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

mTracker.setStartSession(true);

想知道是否打电话

mTracker.setStartSession(false);

明确地停止它。

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

4

3 回答 3

6

概述

因此,我花了一些时间查看测量协议以及查看 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为来禁用自动会话控制。-1analytics.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
于 2013-03-08T23:31:05.140 回答
1

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

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

[tracker set:kGAISessionControl value:@"start"];

结束会话。此跟踪器的下一次命中将是当前会话中的最后一次。

[tracker set:kGAISessionControl value:@"end"];

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

于 2013-09-03T13:46:23.370 回答
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();

于 2013-01-18T18:03:08.897 回答