2012-09-07 11 views

Respuesta

3

Puede utilizar una clase con un valor booleano estático digamos de depuración de esta manera:

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

En el código, sólo tiene que utilizar:

if (BuildMode.DEBUG) ... 

Esta es una solución de trabajo en todas las versiones del SDK de Android !

+0

'BuildMode.DEBUG' o mejor dicho 'BuildConfig.DEBUG'? – pawelzieba

+0

Por lo que sé, no puede usar BuildConfig.DEBUG en versiones inferiores de Android. –

1

Lo que estoy haciendo es incapacitante despacho periódica, mediante el establecimiento de un período negativo, en analytics.xml:

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

o puede hacerlo mediante programación, el uso de su bandera:

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

De esta manera, los hits no se envían a menos que lo haga manualmente.

Eso debería funcionar si solo está utilizando el despacho periódico (nunca llama al .dispatch() manualmente). Los golpes no enviados antes de las 4 a.m. del día siguiente se descartan de alguna manera, supongo, ya que no aparecen en los informes de todos modos.

Ver en la Guía para desarrolladores de Google Analytics:

Nota: Los datos deben ser enviados y recibidos por 4 a.m. del día siguiente, en la zona horaria local de cada perfil. Cualquier dato recibido más tarde que eso no aparecerá en los informes.

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

9

ACTUALIZACIÓN: Con el lanzamiento de Google Analytics v3 for Android,

El SDK proporciona una bandera DryRun que cuando se establece, impide que ningún dato de se envía a Google Analytics. El indicador dryRun debe establecerse cada vez que está probando o depurando una implementación y no desea que los datos de prueba aparezcan en sus informes de Google Analytics.

para establecer el indicador funcionamiento en seco:

// Cuando se establece el funcionamiento en seco, no serán enviados éxitos, pero todavía será registrará como si éstas fueran expedidas.

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

+++ +++ Mi vieja respuesta

basta con comentar la siguiente línea en su archivo analytics.xml mientras está en el modo de desarrollo.

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

Google Analytics no podría encontrar ninguna identificación de seguimiento, por lo que EasyTracker no podrá hacer su trabajo. Cuando está creando la aplicación para su lanzamiento, elimine el comentario de la línea y estará listo.

+2

Tengo curiosidad, ¿puedes establecer la bandera 'dryRun' con' EasyTracker'? – theblang

1

Mi técnica es cambiar el android:versionName en Android Manifiesto hasta el momento de la liberación.

Por ejemplo, 1.0.0.ALPHA hasta la hora de crear una versión APK, en cuyo punto podría cambiar a 1.0.0. De esta forma, aún puede ver todos sus informes de fallas más tarde, pero se agruparán en análisis.

This SO ticket habla sobre el uso de la bandera BuildConfig.DEBUG para configurar condicionalmente análisis y Atul Goyal's respuesta hace referencia a la bandera dryRun en v3. Esas dos cosas podrían ser una buena configuración si no le importa ver informes de fallos durante la depuración en el futuro, y suponiendo que el indicador BuildConfig.DEBUG funciona correctamente.

15

Creo que la manera correcta de hacer esto con la versión 4 de Analytics es con el método de Exclusión

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

También podemos establecer que el método que se establece si se genera en modo de depuración. es decir.

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

Estoy utilizando algo similar para permitir a los usuarios desactivar la analítica.

He encontrado esta información en lo siguiente enlace: https://developers.google.com/analytics/devguides/collection/android/v4/advanced

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

4

Si está compilando una aplicación independiente (no una biblioteca), esta será la forma más sencilla de hacerlo, deje que el sistema de compilación determine si es una compilación de depuración o no.

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

que ver en la web que este método no funciona bien para los proyectos de biblioteca ya que hay error en las herramientas de construcción que no da a la variable BuildConfig.DEBUG correctamente para bibliotecas. No estoy seguro de si este problema está solucionado ahora.

0

Tengo un enfoque diferente para este problema. A veces, aún desea probar que los análisis funcionan correctamente, pero solo desea filtrar los datos de prueba en los informes de producción. Mi solución para eso es crear una dimensión personalizada con ámbito de sesión (es decir, AppBuild), en GA para la propiedad que rastrea si está ejecutando una compilación de depuración o producción de la aplicación. En su código después de crear el Tracker, poner:

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

A continuación, crear o modificar su punto de vista GA añadir un filtro en AppBuild, con exclusión de depuración. Esto debería filtrar todos los datos de depuración desde su vista GA. También puede agregar una nueva vista para mostrar datos de depuración.

Cuestiones relacionadas