2011-11-13 14 views
8

Intenté rastrear la actividad del usuario en mi sitio como hacer clic o pasar el mouse y diferentes tipos de eventos ... ¿Hay alguna solución para rastrear eventos incluso cuando los usuarios trabajan sin conexión ... ¿Puedo guardarlos en algo así como una cookie y enviarlos al servidor cuando encuentre una conexión a Internet activa?Seguimiento de evento sin conexión con Google Analytics

¿Es esto posible?

Gracias

Respuesta

14

depende de qué tipo de navegador que usted está apuntando. ¿Son estos para webapps fuera de línea HTML5?

Si son support ononline and onoffline events, puede implementar esto de manera bastante trivial.

Algunos código potencialmente viable, el uso de eventos fuera de línea, JSON nativo y HTML5 de almacenamiento local:

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 
}); 

allí tendría que sólo tiene que utilizar _ogaq como un contenedor para _gaq.

es decir:

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

Si intenta disparar más de 10 visitas a la anestesia general en un corto período de tiempo que será dado de baja, y sólo los primeros 10 le mandará un mensaje. Significa que para este código, si permanece fuera de línea por mucho tiempo y consulta más de 10 eventos/páginas vistas, solo los primeros 100 irán a GA una vez que esté en línea – Eduardo

+0

Ooh, buena idea. Trabajaré en agregar un setInverval para recorrerlos a una velocidad escalonada :) – Yahel

+1

Además, es importante tener en cuenta que Google Analytics está rastreando algo más que simples eventos: cosas como la hora en que ocurrió un evento y otra sesión cosas relacionadas que desaparecerán o descontextualizarán cuando el usuario vuelva a estar en línea. La solución real sería generar el código de baliza de imagen real e insertar esas imágenes cuando el usuario vuelva a conectarse ... Veré si puedo encontrar una solución. –

3

Otro aspecto a considerar es que el tiempo que quedar registrado sería el momento en que se envían los datos en lugar de recogida localmente en el dispositivo. Afortunadamente, sin embargo, ahora hay una manera de evitar que esto sea un problema utilizando el protocolo de medición y el parámetro qt (tiempo de cola) que le permite enviar la edad del evento/vista, etc. en milisegundos. Lo intenté en el visor en tiempo real y aparece en el momento grabado como se esperaba.

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

cuenta de que es una vieja pregunta, pero me ha estado conduciendo loco este fin de semana.

0

No funcionó para mí, así que descubrí, que el empuje GA de la matriz no funcionó correctamente. Así que hice un bucle en la matriz, empujé cada entrada a Google Analytics. Ahora funciona como un encanto ...

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

de acuerdo con esta article, el comportamiento en línea está soportada por el google fuera de línea. que acaba de añadir estos biblioteca

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