使用Google Analytics跟踪离线活动

时间:2011-11-13 21:17:15

标签: javascript google-analytics google-analytics-api

我试图跟踪我网站中的用户活动,例如点击或鼠标悬停以及不同类型的活动.... 即使用户离线工作,是否有任何跟踪事件的解决方案... 我可以将它们存储在像cookie这样的东西中,并在找到活动的互联网连接时将它们发送到服务器吗?

这可能吗?

谢谢

5 个答案:

答案 0 :(得分:15)

取决于您定位的浏览器类型。这些是HTML5离线webapps吗?

如果他们support ononline and onoffline events,您可以相当平凡地实现这一点。

一些可行的代码,使用脱机事件,本机JSON和HTML5本地存储:

if(!localStorage.getItem("offlineGA")){
  localStorage.setItem("offlineGA","[]");
}
var _ogaq = {
push : function(arr){
    if(navigator.onLine || !("onLine" in navigator)){ // if online or if browser doesn't support onLine/offLine detection.
        _gaq.push(arr);
    }
    else{
     var stored = JSON.parse(localStorage.getItem("offlineGA"));
     stored.push(arr);
     localStorage.setItem("offlineGA", JSON.stringify(stored));
    }
}
};

$(window).bind("online", function(){ // if you don't have jQuery, you can do window.ononline instead
   _gaq.push( JSON.parse(localStorage.getItem("offlineGA")) );
   localStorage.setItem("offlineGA","[]"); //empty it
});

然后您只需使用_ogaq作为_gaq的包装。

即:

_ogaq.push(["_trackEvent","Category", "Action"]);

答案 1 :(得分:3)

另一件需要考虑的事情是,记录的时间是发送数据的时间,而不是在设备上本地收集的时间。幸运的是,现在有一种方法可以避免使用测量协议和qt参数(队列时间)这一问题,它允许您以毫秒为单位发送事件/视图等的年龄。我在实时查看器中尝试了这一点,并且它确实在按预期记录的时间显示。

https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#qt

意识到这是一个古老的问题,但它本周末一直让我疯狂。

答案 2 :(得分:2)

您可能会发现这也很有用。 ononline / offline并不像人们想象的那么可靠。

http://www.google.com/support/forum/p/Google%20Analytics/thread?tid=67e8cf894a003c64&hl=en

答案 3 :(得分:1)

根据此article,Google离线支持离线行为。 你只需要添加这些库

start_safe_perms

答案 4 :(得分:0)

对我来说没有用,所以我发现,阵列的GA推送无法正常工作。 所以我循环播放了数组,将每个条目推送到Google Analytics。现在它就像一个魅力......

$(window).bind("online", function(){ // if you don't have jQuery, you can do window.ononline instead

   var json = JSON.parse(localStorage.getItem("offlineGA"));

   for(var i = 0; i < json.length; i++) {    
        _ogaq.push([json[i][0],json[i][1], json[i][2]]);
    }

   localStorage.setItem("offlineGA","[]"); //empty it
   var json = "";
});