Cómo detener una sesión en Google mobile analytics v2 para android sin EasyTracker

He leído la documentación en el sitio web de GoogleAnalytics v2 (básicamente he leído todas las páginas de https://developers.google.com/analytics/devguides/ ) pero no he podido encontrar una respuesta precisa a mi pregunta. Es faltante o mezclado con la documentación de la versión 1.

Sé que con EasyTracker, puede establecer un parámetro timeout_session. Pero no quiero utilizar EasyTracker y quiero detener explícitamente una sesión en algún momento de mi código. (No establecer un tiempo de espera)

Comienzo una sesión cuando abro mi aplicación con:

mTracker.setStartSession(true); 

Y se preguntaba si llamar

 mTracker.setStartSession(false); 

Lo detiene explícitamente.

Cualquier ayuda o punto a un mejor tutorial / documentación sería muy apreciada.

3 Solutions collect form web for “Cómo detener una sesión en Google mobile analytics v2 para android sin EasyTracker”

En el GA v3, para iniciar o finalizar manualmente una sesión, utilice el parámetro de control de sesión del rastreador de la siguiente manera:

Inicie una nueva sesión. El siguiente golpe de este rastreador será el primero de una nueva sesión.

 [tracker set:kGAISessionControl value:@"start"]; 

Finalizar una sesión. El siguiente golpe de este rastreador será el último en la sesión actual.

 [tracker set:kGAISessionControl value:@"end"]; 

Esta información está disponible en el enlace: https://developers.google.com/analytics/devguides/collection/ios/v3/sessions

Visión de conjunto

Así que pasé un tiempo pasando por el Protocolo de Medición, así como mirando a través de los registros de depuración en LogCat. Cuando GA en su teléfono 'despacha' un montón de visitas, cada golpe parece tener una solicitud HTTP correspondiente en el registro que comienza con:

 GET /collect?... 

Y es seguido por un montón de parámetros que definen el tipo de éxito (por ejemplo, evento, social, comercio electrónico) y alguna información básica sobre la aplicación (por ejemplo, ID de aplicación, identificación de seguimiento, marca de tiempo).

Esto es lo que aprendí:

setStartSession(false) no finaliza una sesión.


Cómo lo descubrí

Como dije antes, cada golpe representa algún tipo de acción. Sin embargo, los inicios de sesiones o los finales de sesiones no se consideran visitas. Son simplemente datos adicionales que se agregan al golpe más reciente que le dice a GA que agrupe los impactos futuros en una nueva sesión.

Así que si sendEvent(...) y luego setStartSession(true) y luego dispatch() , verás UN hit en los registros que describe el evento con un parámetro adicional &sc=start que describe el inicio de una nueva sesión .

Entonces intenté hacer lo anterior usando setStartSession(false) y no noté el parámetro adicional &sc . Debería haber sido &sc=end , como se describe aquí .


Potencial Hack

El rastreador tenía un método de send(...) que parece que le permitiría enviar un golpe personalizado especificando los parámetros necesarios. Después de algunas pruebas y errores, lo siguiente creó correctamente un evento y adjuntó el parámetro de fin de sesión como se describió anteriormente.

 Map<String, String> data; data = EasyTracker.getTracker().constructEvent("Test", "Test", "Test", 0L); data.put("sessionControl", "end"); EasyTracker.getTracker().send("event", data); 

Así que teóricamente, cada vez que quieras terminar una sesión, puedes hacer un evento ficticio (como el anterior), agregar el parámetro sessionControl y enviarlo. De los registros parece funcionar perfectamente, pero no he verificado esto en mi panel de GA.

Y asegúrese de desactivar el control automático de sesión al establecer ga_sessionTimeout en -1 en el archivo analytics.xml .

También he subido mi proyecto aquí , si quieres probar a través de los registros y comparar los éxitos. Asegúrese de actualizar su ID de seguimiento de GA. ¡Espero que esto ayude!


Mis registros

Iniciar Sesión + Evento de Prueba, Despacho

 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 

Fin de Sesión + Evento de Prueba, Despacho

 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 

Fin de Sesión Hack + Evento de Prueba, Despacho

 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 

En GoogleAnalytics v2 tienen nuevas formas de iniciar / detener la sesión.

No he visto su código de mTracker.setStartSession(true) y mTracker.setStartSession(false) usado antes.

Ahora, si no desea utilizar los métodos de EasyTracker puede iniciar una nueva sesión por lo siguiente:
mTracker.startNewSession("UA-xxxxxxx-x", 20, this);

Con la primera entrada siendo
(String uniqueGoogleAnalyticsKey, int autoDispatchTimer, Context this)

Para detenerlo: tracker.stopSession();

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.