Panoramica
Quindi ho passato un po 'di tempo a esaminare il Measurement Protocol e a esaminare i log di debug in LogCat. Quando GA il vostro telefono 'dispacci' un po 'di colpi, ogni colpo sembra avere una corrispondente richiesta HTTP nel registro che inizia con:
GET /collect?...
ed è seguito da un gruppo di parameters che definiscono il tipo di colpo (ad es. eventi, social, e-commerce) e alcune informazioni di base sull'app (ad esempio ID app, ID di tracciamento, timestamp).
Ecco cosa ho imparato:
setStartSession(false)
fa non terminare una sessione.
Come l'ho scoperto
Come ho detto prima, ogni colpo rappresenta un certo tipo di azione. Tuttavia, le sessioni iniziate o le sessioni non sono considerate hit. Si tratta semplicemente di dati aggiuntivi che vengono aggiunti alla hit più recente che indica a GA di raggruppare gli hit futuri in una nuova sessione.
Quindi, se si sendEvent(...)
e poi setStartSession(true)
, e poi dispatch()
, vedrete uno colpito nei log che descrive l'evento con un parametro aggiuntivo &sc=start
che descrive l'inizio di una nuova sessione.
Ho quindi provato a fare quanto sopra utilizzando setStartSession(false)
e non ho notato il parametro aggiuntivo &sc
. Dovrebbe essere &sc=end
, come descritto here.
Potenziale Hack
L'inseguitore aveva un metodo send(...)
che sembra che permetterebbe di inviare una consuetudine colpito specificando i parametri necessari. Dopo alcune prove ed errori, il seguente evento ha creato con successo un evento e associato al parametro di fine sessione come descritto sopra.
Map<String, String> data;
data = EasyTracker.getTracker().constructEvent("Test", "Test", "Test", 0L);
data.put("sessionControl", "end");
EasyTracker.getTracker().send("event", data);
Quindi, in teoria, ogni volta che si desidera terminare una sessione, è possibile un evento fittizio (come sopra), aggiungere il sessionControl
parametri, e la spedizione. Dai log sembra funzionare perfettamente, ma non l'ho verificato sulla mia bacheca GA.
E assicurarsi di disabilitare il controllo automatico della sessione impostando ga_sessionTimeout
su -1
nel file analytics.xml
.
Ho anche caricato my project here, se si desidera provare a guardare attraverso i registri e confrontare i risultati. Assicurati di aggiornare l'ID di monitoraggio GA. Spero che questo ti aiuti!
miei registri
Inizia la sessione + Test Event, spedizione
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
Termina sessione + Test Event, spedizione
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
Termina sessione Hack + Test Event, spedizione
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
Ciao, grazie per quello! Stavo chiedendo per Android (ho messo il tag "Android" alla mia domanda) quindi ecco un link più appropriato alla mia domanda: https://developers.google.com/analytics/devguides/collection/android/v3/ sessioni È uguale al tuo ma per Android ... Inoltre stavo chiedendo analytics v2 ma suppongo che dovrò migrare alla v3 allora. Accetto la tua risposta in quanto ritengo sia la più accurata. Grazie ancora. – p4u144