Configuración avanzada

En este documento se ofrece una descripción general de algunas funciones de configuración avanzada de la versión 4 del SDK de Google Analytics para Android.

Descripción general

El SDK de Google Analytics SDK para Android ofrece una clase Tracker para configurar y enviar datos a Google Analytics, y una instancia única de GoogleAnalytics que se usa como interfaz para los valores de configuración globales de la implementación.

Inicialización

Para medir los datos, debes inicializar al menos un objeto de seguimiento a través de la instancia única de GoogleAnalytics facilitando un Context y un ID de propiedad de Google Analytics. Si quieres obtener más información, consulta la Referencia de Google Analytics.

Uso de un archivo de configuración

Además, es posible inicializar un rastreador mediante un archivo de configuración. Por ejemplo:

package com.google.android.apps.mobileplayground;

import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import java.util.HashMap;

/**
 * An extension to Application class to provide tracker for analytics purposes. Having the tracker
 * instances here allows all the activities to access the same tracker instances. The trackers can
 * be initialised on startup or when they are required based on performance requirements.
 */
public class AnalyticsSampleApp extends Application {

  // The following line should be changed to include the correct property id.
  private static final String PROPERTY_ID = "UA-XXXXX-Y";

  /**
   * Enum used to identify the tracker that needs to be used for tracking.
   *
   * A single tracker is usually enough for most purposes. In case you do need multiple trackers,
   * storing them all in Application object helps ensure that they are created only once per
   * application instance.
   */
  public enum TrackerName {
    APP_TRACKER, // Tracker used only in this app.
    GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
    ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
  }

  HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

  public AnalyticsSampleApp() {
    super();
  }
  synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {

      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
          : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
              : analytics.newTracker(R.xml.ecommerce_tracker);
      mTrackers.put(trackerId, t);

    }
    return mTrackers.get(trackerId);
  }
}

Configuración y envío de datos

Los datos se envían a Google Analytics mediante compiladores para establecer pares parámetro-valor enviándolos a través del método send del objeto de seguimiento.

En el ejemplo siguiente, vemos cómo enviar una visita a una pantalla a Google Analytics creando una vista de aplicación y llamando al método send del objeto de seguimiento:

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());

Sintaxis del signo "&" del protocolo de medición

Puedes usar la sintaxis del signo "&" del Protocolo de medición para configurar valores en un solo hit con un objeto HitBuilders.ScreenViewBuilder. Para configurar valores en todos los hits posteriores, utiliza el propio objeto de seguimiento.

// Setting the content description field on a single hit using ampersand syntax.
tracker.send(new HitBuilders.ScreenViewBuilder()
  .set("&cd", "Home Screen")
  .build()
);

Si quieres ver la lista completa de parámetros disponibles para el Protocolo de medición, consulta la Referencia de parámetros para el Protocolo de medición.

Aplicar valores a varios hits

Cualquier valor configurado en el objeto de seguimiento directamente se conservará y se aplicará a varios hits, como en el siguiente ejemplo:

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());

// This event will also be sent with the most recently set screen name.
// Build and send an Event.
t.send(new HitBuilders.EventBuilder()
    .setCategory(getString(categoryId))
    .setAction(getString(actionId))
    .setLabel(getString(labelId))
    .build());

// Clear the screen name field when we're done.
t.setScreenName(null);

Solo deben configurarse directamente en el objeto de seguimiento los valores que quieras mantener en varios hits. Lo lógico sería especificar un nombre de pantalla en un objeto de seguimiento, ya que el mismo valor puede aplicarse a los próximos hits de visita a una pantalla y de evento. Sin embargo, no sería recomendable configurar un campo como tipo de hit en el objeto de seguimiento, ya que lo más probable es que cambie con cada hit.

Uso de varios objetos de seguimiento

Puedes utilizar varios objetos de seguimiento en tu aplicación móvil para enviar datos a propiedades diferentes:


public class MyApp extends Application {

  public void initTrackers() {
    GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

    globalTracker = analytics.newTracker(R.xml.global_tracker);
    ecommerceTracker = analytics.newTracker(R.xml.ecommerce_tracker);
  }

  public static Tracker globalTracker;
  public static Tracker ecommerceTracker;

  ...
}

Aunque tu aplicación móvil puede tener varios objetos de seguimiento, solo puedes utilizar un objeto de seguimiento para informar de excepciones sin detectar llamando al método enableExceptionReporting() en el objeto de seguimiento.

Muestreo

Puedes habilitar el muestreo del cliente para limitar el número de hits que se envían a Google Analytics. Si tu aplicación tiene un gran número de usuarios o envía un gran volumen de datos a Google Analytics, al habilitar el muestreo, te asegurarás de que los informes sean constantes.

Por ejemplo, para habilitar el muestreo del cliente con una frecuencia del 50%, usa el siguiente parámetro en tu archivo de configuración:

<string name="ga_sampleFrequency">50.0</string>

Para habilitar el muestreo del cliente de forma automatizada para un objeto de seguimiento:

mTracker.setSampleRate(50.0d);

Inhabilitación en la aplicación

Puedes colocar una marca de inhabilitación en la aplicación que inhabilite Google Analytics en toda la aplicación. Ten en cuenta que esta marca se debe establecer cada vez que la aplicación se inicia y utiliza false como valor predeterminado.

Para obtener la opción de inhabilitación en la aplicación, usa:

boolean isOptedOut = GoogleAnalytics.getInstance(this).getAppOptOut();

Para configurar la inhabilitación en la aplicación, usa:

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

En una implementación normal, es posible que la aplicación detecte un cambio en SharedPreferences y actualice la opción de inhabilitación de Google Analytics en consecuencia:

SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);

userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {

  @Override
  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    if (key.equals(TRACKING_PREF_KEY)) {
      GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));
    } else {
      // Any additional changed preference handling.
    }
  }
});

Anonimización de IP

Al habilitar la IP anónima se indica a Google Analytics que haga anónima la información de IP enviada por el SDK mediante la supresión del último octeto de la dirección IP antes de su almacenamiento.

Para habilitar la función de convertir en anónima la IP, utiliza el siguiente parámetro en tu archivo de configuración:

<string name="ga_anonymizeIp">true</string>

Para habilitar la función de convertir en anónima la IP mediante programación en un objeto de seguimiento, utiliza el método setAnonymizeIp:

mTracker.setAnonymizeIp(true)

El método setAnonymizeIp se puede llamar en cualquier momento.

Prueba y depuración

La versión 4 del SDK de Google Analytics para Android ofrece herramientas para facilitar las pruebas y la depuración.

Ejecución segura

El SDK ofrece una marca dryRun que, cuando se activa, evita que los datos se envíen a Google Analytics. La marca dryRun debería establecerse durante la depuración de una implementación y cuando no desees que los datos de la prueba aparezcan en los informes de Google Analytics.

Para configurar la marca de ejecución segura:

// When dry run is set, hits will not be dispatched, but will still be logged as
// though they were dispatched.
GoogleAnalytics.getInstance(this).setDryRun(true);

Logger

Google Analytics se registrará en logcat con la etiqueta GAv4 mediante el sistema Log de Android. De forma predeterminada, solo están habilitados los niveles ERROR, WARN e INFO. Para habilitar el nivel DEBUG, ejecuta el siguiente comando adb en tu dispositivo o emulador:

adb shell setprop log.tag.GAv4 DEBUG

Para ver solo los mensajes de Google Analytics procedentes de logcat, usa el siguiente comando:

adb logcat -v time -s GAv4

Para obtener más información, consulta la Referencia de Logger de Google Analytics.