Desactivar GoogleAnalytics de la aplicación Android cuando se prueban o desarrollan

Estoy usando EasyTracker en mi aplicación de Android y necesito una manera de deshabilitar el seguimiento de Analytics cuando la aplicación está en modo de "desarrollo" o "prueba" (tengo un indicador en un archivo de constantes para discriminar).

¿Cuál es la mejor manera de hacerlo?

¡Gracias!

Puede utilizar una clase con un valor booleano estático digamos DEBUG como este:

public final class BuildMode { public final static boolean DEBUG = true; } 

En código, utilice:

 if (BuildMode.DEBUG) ... 

Esta es una solución que funciona en todas las versiones de SDK de Android.

Creo que la forma correcta de hacerlo con la Versión 4 de Analytics es con el método Opt Out

 GoogleAnalytics.getInstance(this).setAppOptOut(true); 

Puede establecer que el método se establezca si crea en modo de depuración. es decir.

 GoogleAnalytics.getInstance(this).setAppOptOut(BuildConfig.DEBUG); 

Estoy utilizando algo similar para permitir a los usuarios a opt-out de análisis.

Encontré esta información en el siguiente enlace: https://developers.google.com/analytics/devguides/collection/android/v4/advanced

Edit: Acabo de ver la fecha de la pregunta original, pero pensé que iba a añadir esta respuesta de todos modos, ya que era algo que estaba buscando.

ACTUALIZACIÓN: Con la liberación de Google Analytics v3 para Android ,

El SDK proporciona un indicador dryRun que, cuando se establece, evita que se envíen datos a Google Analytics. El indicador dryRun debe establecerse siempre que esté probando o depurando una implementación y no desee que los datos de prueba aparezcan en los informes de Google Analytics.

Para establecer el indicador de ejecución en seco:

// Cuando se establece la ejecución en seco, los impactos no se enviarán, pero se registrarán como si se hubiesen enviado.

GoogeAnalytics.getInstance (this) .setDryRun (true);

+++ Mi vieja respuesta +++

Simplemente comente la siguiente línea en su archivo analytics.xml mientras esté en modo de desarrollo.

 <string name="ga_trackingId">UA-****</string> 

Google Analytics no podría encontrar ningún ID de seguimiento, por lo que EasyTracker no podrá realizar su trabajo. Cuando estés creando la aplicación para liberarla, descomenta la línea y podrás ir.

Si está construyendo una aplicación independiente (no una biblioteca), ésta será la forma más fácil de hacerlo, deje que el sistema de compilación averigüe si se trata de una compilación de depuración o no.

 if(BuildConfig.DEBUG){ GoogleAnalytics.getInstance(this).setDryRun(true); } 

Veo en la web que este método no funciona bien para proyectos de biblioteca, ya que hay error en las herramientas de compilación que no establece el indicador BuildConfig.DEBUG correctamente para bibliotecas. No estoy seguro si este problema está arreglado ahora.

Lo que estoy haciendo es desactivar el envío periódico, estableciendo un período negativo, en analytics.xml:

 <integer name="ga_dispatchPeriod">-60</integer> 

O puede hacerlo de forma programática, utilizando su bandera:

 if (testingMode) { GAServiceManager.getInstance().setDispatchPeriod(-1); } else { GAServiceManager.getInstance().setDispatchPeriod(60); } 

De esta forma, los impactos no se envían a menos que lo hagas manualmente.

Eso debería funcionar si sólo está utilizando despachos periódicos (nunca llamando .dispatch() manualmente). Hits no enviados antes de las 4 am del día siguiente son de alguna manera descartados, supongo, ya que no aparecen en los informes de todos modos.

Consulte la Guía del desarrollador de Google Analytics:

Nota: Los datos deben ser enviados y recibidos antes de las 4 am del día siguiente , en el huso horario local de cada perfil. Los datos recibidos posteriormente no aparecerán en los informes.

Más información: https://developers.google.com/analytics/devguides/collection/android/v2/dispatch

Mi técnica es cambiar el android:versionName en Android Manifest hasta el tiempo de lanzamiento.

Por ejemplo, 1.0.0.ALPHA hasta el momento de construir un APK de lanzamiento, en cuyo punto usted podría cambiar a 1.0.0 . De esta forma, podrá ver todos los informes de fallos posteriormente, pero se agruparán en análisis.

Este boleto de SO habla sobre el uso de la bandera BuildConfig.DEBUG para configurar de forma condicional la analítica y Atul Goyal's respuesta de Atul Goyal's referencia a la bandera dryRun en v3 . Esas dos cosas podrían ser una buena configuración si no le importa ver informes de BuildConfig.DEBUG durante la depuración en el futuro y suponiendo que el flag BuildConfig.DEBUG funciona correctamente.

Tengo un enfoque diferente a este tema. A veces, todavía desea probar que el análisis está funcionando correctamente, pero sólo desea filtrar los datos de prueba en los informes de producción. Mi solución es crear una dimensión de ámbito de sesión personalizada (es decir, AppBuild), en GA para la propiedad que realiza el seguimiento si está ejecutando una compilación de depuración o producción de la aplicación. En tu código después de crear el Tracker, pon:

 // replace 1 with the correct dimension number if you have other dimensions defined tracker.set("&cd1", BuildConfig.DEBUG ? "debug" : "production"); 

A continuación, cree o modifique su vista GA para agregar un filtro en AppBuild, excluyendo depuración. Esto debería filtrar todos los datos de depuración de su vista GA. También puede agregar una nueva vista para mostrar los datos de depuración.

  • La técnica de análisis XML de Android
  • ¿Qué es una buena biblioteca para analizar expresiones matemáticas en java?
  • Análisis de archivos XML locales con Sax en Android
  • Analizar notificaciones push en Android
  • Obtención de datos de Id de objeto en Parse.com
  • Cómo consultar el valor de la columna que se establece como puntero a otra tabla en Parse
  • Android: analiza XML desde problemas de cadena
  • Análisis de cadenas de consulta en Android
  • Cómo analizar valores float de cadena utilizando REGEX en java
  • Analizar la página web con Jsoup. ¿Por qué el comportamiento en Android es diferente?
  • Android EasyTracker no funciona correctamente?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.