2011-11-13 18 views
8

Ho provato a tenere traccia delle attività degli utenti nel mio sito come clic o mouse e diversi tipi di eventi .... C'è una soluzione per tenere traccia degli eventi anche quando gli utenti lavorano offline ... Posso memorizzarli in qualcosa di simile ai cookie e inviarli al server quando trovi la connessione Internet attiva?Monitoraggio dell'evento offline con Google Analytics

È possibile?

Grazie

risposta

14

dipende da ciò che i tipi di browser che stai targeting. Sono questi per webapp offline HTML5?

Se si tratta di support ononline and onoffline events, è possibile implementarlo in modo abbastanza banale.

Alcuni codice potenzialmente praticabile, utilizzando eventi offline, JSON nativo e HTML5 archiviazione locale:

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

allora si sarebbe semplicemente utilizzare _ogaq come un wrapper per _gaq.

cioè:

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

Se si tenta di sparare più di 10 colpi al GA in un breve periodo sarà abbandonato, e solo verrà inviato il primo 10. Significa che per questo codice se rimani offline per troppo tempo e richiedi più di 10 eventi/pagine visualizzate, solo i primi 100 andranno effettivamente in GA una volta che sarai online – Eduardo

+0

Ooh, buona chiamata. Lavorerò sull'aggiunta di un setInverval per visualizzarli a ciclo con una velocità scaglionata :) – Yahel

+1

Inoltre, è importante notare che Google Analytics sta tracciando più di semplici eventi: cose come il tempo in cui un evento ha avuto luogo così come altre sessioni roba correlata che sarà eliminata o fuori contesto nel momento in cui l'utente torna online. La vera soluzione sarebbe quella di generare l'effettivo codice beacon dell'immagine e incorporare quelle immagini quando l'utente torna online ... vedrò se riesco a trovare una soluzione. –

3

Un'altra cosa da considerare è che il tempo che sarebbe ottenere registrato sarebbe il momento i dati sono stati inviati al contrario di raccolte localmente sul dispositivo. Fortunatamente però ora c'è un modo per evitare che questo sia un problema usando il protocollo di misura e il parametro qt (tempo di coda) che ti permette di inviare l'età dell'evento/vista ecc. In millisecondi. Ho provato questo nel visualizzatore in tempo reale e si presenta all'ora registrata come previsto.

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

rendo conto che è una vecchia questione, ma mi è stato alla guida di bonkers questo fine settimana.

0

Non ha funzionato per me, quindi ho scoperto che la spinta GA dell'array non funzionava correttamente. Così ho collegato in loop la matrice, ho spinto ogni voce in Google Analytics. Ora funziona come un fascino ...

$(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

secondo questa article, comportamento non in linea è supportato dal Offline Google. basta aggiungere questi biblioteca

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