跟踪离线事件与谷歌分析

Tracking offline event with Google Analytics

本文关键字:谷歌 离线 事件 跟踪      更新时间:2023-09-26

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

这可能吗?

谢谢

取决于你的目标浏览器类型。这些是HTML5离线web应用程序吗?

如果它们支持ononlineonoffline事件,您可以自己轻松地实现它。

一些可能可行的代码,使用离线事件,本地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的包装。

ie:

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

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

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

我知道这是一个老问题,但这个周末它已经把我逼疯了。

您可能会发现这也很有帮助。在线/离线并不像人们想象的那样可靠。

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

根据本文,脱机行为是由Google脱机支持的。你只需要添加这些库

    npm install --save-dev sw-offline-google-analytics
    ...
    importScripts('path/to/offline-google-analytics-import.js');
    goog.offlineGoogleAnalytics.initialize();

对我不起作用,所以我发现,数组的GA推不能正常工作。所以我循环了这个数组,把每个条目都推送到谷歌分析。现在它就像一个魅力…

$(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 = "";
});