Google Analytics en Android

Buenas, hace poco he integrado las estadísticas de Google Analytics en una aplicación que estoy preparando. La verdad es que visto al final, el proceso no parece muy complicado, pero ir siguiendo los diferentes pasos a través de diferentes páginas y en inglés puede llegar a ser un tema que se le puede atragantar a más de uno. Hoy veremos como hacer esto en unos sencillos pasos.


Lo primero que tenemos que hacer es acceder con nuestra cuenta Google en la web de Google Analytics. Las pasos a seguir los voy a hacer con  la nueva interfaz de Google por lo que puede variar algo para los que teneis la antigua. Pinchamos en el icono de administración de cuentas (barra naranja a la derecha), ahi teneis un botón para crear una cuenta nueva. Por cada una de vuestras aplicaciones creareis una.




Para los que ya han añadido estas estadísticas en una página web, deciros que son los mismos pasos, solo que con alguna pequeña diferencia. Le damos nombre a nuestra cuenta e indicamos que no es una página web, aunque podéis poner que es una web e inventaros el dominio, por ejemplo con el espacio de nombres de vuestro proyecto o con un subdominio de alguna web vuestra.

Una vez rellenado todo, guardamos, y nos quedamos con el id de seguimiento, olvidándonos de todo el javascript que nos da (solo es necesario si lo integramos en una web). Además nos muestran un botón para descargar el SDK de Android. Desde aquí vais a la zona de descargas y descargais la versión para Android.

Descomprimimos el archivo, dentro de este tenemos un archivo libGoogleAnalytics.jar y algún ejemplo para integrar en nuestras aplicaciones. Lo que hago normalmente es en la carpeta donde tengo mis proyectos, tengo una carpeta libs para tener a mano siempre estas librerias que voy descargando.

Lo que si que teneis que hacer es abrir vuestro proyecto, y crear una carpeta llamada libs en el raíz de la aplicación, y colocar aquí el archivo .jar. Ahora hacemos botón derecho sobre el nombre de nuestro proyecto y vamos a Properties -> Java Build Path -> Pestaña Libraries -> Botón add jars... en la pantalla que aparece buscamos nuestro proyecto y seleccionamos el archivo jar de la carpeta libs, y aceptamos todo.

Ahora en el archivo AndroidManifest.xml  añadimos los siguientes permisos para que la librería pueda funcionar, acceder a internet y comprobar el estado de nuestra conexión para registrar las visitas.


<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


Y vamos a crear una clase para que sea más sencillo utilizar las estadísticas en toda nuestra aplicación, le llamaremos AnalyticsManager:


private GoogleAnalyticsTracker tracker;
 private String UA_Code;
 private int frecuencyUpdateGoogle = 60;
 private Context context;
 
 private GoogleAnalyticsTracker getTracker(){
  if(tracker == null){
   tracker = GoogleAnalyticsTracker.getInstance();
   tracker.startNewSession(UA_Code, frecuencyUpdateGoogle ,this.context);
  }
  return tracker;
 }
 
 public AnalyticsManager(Context context,String UACode){
  this.context = context;  
  this.UA_Code = UACode;
 }
 
 public void registerPage(String page, String parameter){
  this.getTracker().trackPageView("/" + page+ "/" + parameter);
 }
 
 public void registerPage(String page){  
  this.getTracker().trackPageView("/" + page);
 }
 
 public void registerAction(String Category, String Action, String Label, int Value){
  this.getTracker().trackEvent(Category, Action, Label, Value);
 }
 
 public void stopTracker(){
  if(this.getTracker() != null)
   this.getTracker().stopSession();
 }
}


La clase no es muy extensa, en el constructor le pasamos el context donde estamos y el id de seguimiento o UA_Code de Google. El UA_Code lo podéis guardar como una variable global, como veremos después, y de esta forma podéis exportar esta clase a cualquiera de vuestros proyectos. La frecuencia de refresco está en 60 segundos, si lo creéis oportuno, ajustad este parámetro a vuestras necesidades.

Para registrar estadísticas tenéis el método registerPage al cual podéis indicar el nombre de la página, aquí será una activity, a la que navega el usuario, y podéis indicar también un parámetro más por si es una vista que muestra el detalle de algún ítem, y podáis saber hacia cuales navegan vuestros usuarios.

El otro método es registerAction y va a permitirnos registrar cuales son los botones, acciones etc... que más utilizan los usuarios. Podemos indicar la categoría, acción, etiqueta y valor de nuestros botones.

Llegados a este punto ya tenemos totalmente operativa nuestra aplicación, a partir de aquí sería tan fácil como instanciar esta clase y llamar a estos métodos cuando los necesitemos. Advertiros que Google no va a empezar a reflejar el histórico de las estadísticas hasta pasado un día, pero, hay una opción en la que podéis ver las estadísticas en tiempo real de los últimos 30 minutos y no necesitáis esperar un día para saber si está funcionando o no las estadísticas.

Ahora os voy a enseñar como registro en mi aplicación las estadísticas. Por un lado me creo una clase AppGlobals que hereda de Application y me permite acceder a propiedades u objetos que quiero tener de forma global en mi aplicación. Una vez creada teneis que abrir el archivo AndroidManifest.xml y en la pestaña Application chequeais la opción Define an <application> tag in the AndroidManifest.xml y en Name pinchais en Browse y os aparecerá la clase AppGlobals, la seleccionais y guardais.

En la clase AppGlobals vamos a tener el siguiente código, los métodos son static, de esta forma no es necesario instanciar esta clase para llamarlos:


public static String getUACodeAnalytics(){return "UA-xxxxxxxxx-x";}
private static AnalyticsManager analyticsManager = null;

public static AnalyticsManager getAnalyticsManager(Context context){
 if(analyticsManager == null)
  analyticsManager = new AnalyticsManager(context,getUACodeAnalytics());
 return analyticsManager;
}
 
public static AnalyticsManager getAnalyticsManager(){
 return analyticsManager;
}


Lo que estamos haciendo aquí es utilizar el AppGlobals para poder llamar la clase analytics, está ya se encarga de crear el objeto y pasarle el UA_Code si es necesario, de esta forma utilizarlo desde nuestras activitys es muy fácil, solo tenemos que hacer una llamada más o menos así pero utilizando registerPage o registerAction según vuestras necesidades y con los parámetros que consideréis oportunos:


AppGlobals.getAnalyticsManager(this.getApplicationContext()).registerPage("MainMenu");


Para abrir una nueva activity también suelo tener una clase donde tengo todas las llamadas a mis activitys localizadas, de esta forma si tengo que cambiar, como por ejemplo el nombre de la visita solamente hago el cambio aquí. Este es un tema diferente que no voy a tratar aquí pero seguramente no tardaré en hacerlo.

Comments are closed.