Configuración avanzada

En este documento, se proporciona una descripción general de algunas de las funciones de configuración avanzadas del SDK de Google Analytics versión 4 para Android.

Descripción general

La versión 4 del SDK de Google Analytics para Android proporciona una clase Tracker para configurar y enviar datos a Google Analytics, y un singleton GoogleAnalytics que funciona como interfaz para los valores de configuración globales de tu implementación.

Inicialización

Antes de que se puedan medir datos, debes inicializar al menos un rastreador con el singleton GoogleAnalytics. Para ello, proporciona un objeto Context y un ID de propiedad de Google Analytics. Para obtener más información, consulta la referencia de Google Analytics.

Uso de un archivo de configuración

También 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);
  }
}

Configura y envía datos

Los datos se envían a Google Analytics mediante compiladores para establecer pares de parámetros y valores que los envían a través del método send de la herramienta de seguimiento.

En el siguiente ejemplo, se muestra cómo enviar una vista de pantalla a Google Analytics creando una vista de app y llamando al método de envío de segmentos:

// 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 y enumeración del protocolo de medición

Puedes usar la sintaxis de unión del Protocolo de medición para establecer valores en un solo hit con un HitBuilders.ScreenViewBuilder. Para establecer valores en todos los hits posteriores, usa el 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()
);

Para obtener una lista completa de los parámetros del Protocolo de medición disponibles, consulta la Referencia de los parámetros del Protocolo de medición.

Aplicación de valores a varios hits

Cualquier valor configurado directamente en la herramienta de seguimiento se conservará y se aplicará a varios hits, como en este 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 los valores que deseas conservar en varios hits deben configurarse directamente en el segmento. Establecer un nombre de pantalla en un dispositivo de rastreo tendría sentido, ya que se puede aplicar el mismo valor a las visitas de pantalla y a las visitas al evento posteriores. Sin embargo, no se recomienda configurar un campo como el tipo de hit en el rastreador, ya que es probable que cambie con cada hit.

Uso de varios monitores

En tu aplicación para dispositivos móviles, puedes usar varios rastreadores para enviar datos a diferentes propiedades:


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;

  ...
}

Si bien tu aplicación para dispositivos móviles puede tener varias herramientas de seguimiento, puedes usar solo una para informar excepciones no detectadas llamando al método enableExceptionReporting() en la herramienta de seguimiento.

Muestreo

Puedes habilitar el muestreo del cliente para limitar la cantidad de hits que se envían a Google Analytics. Si tu app tiene una gran cantidad de usuarios o envía un gran volumen de datos a Google Analytics, habilitar el muestreo ayudará a garantizar informes sin interrupciones.

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

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

Para habilitar el muestreo del cliente de manera programática para un rastreador, haz lo siguiente:

mTracker.setSampleRate(50.0d);

Inhabilitar a nivel de la app

Puedes habilitar una marca de inhabilitación a nivel de la app que inhabilitará Google Analytics en toda la app. Ten en cuenta que esta marca se debe establecer cada vez que se inicie la app y, de forma predeterminada, será false.

Para obtener la configuración de inhabilitación a nivel de la app, usa lo siguiente:

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

Para establecer la inhabilitación a nivel de la app, utiliza lo siguiente:

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

En una implementación típica, una app puede detectar un cambio en SharedPreferences y actualizar el parámetro de configuración de inhabilitación de Google Analytics según corresponda:

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.
    }
  }
});

Cómo borrar datos de usuario del cliente

Si necesitas restablecer o borrar los datos del cliente de Google Analytics para tus usuarios finales, puedes borrar el archivo de ID de cliente.

Si borras el archivo gaClientId, se forzará la generación de un nuevo ID de cliente, y todos los hits posteriores usarán el nuevo. Los datos anteriores no se asociarán con el nuevo ID de cliente.

Para borrar el archivo gaClientId, usa el método Context.deleteFile:

context.deleteFile("gaClientId");

Anonimizar IP

Habilitar la función de anonimización de IP le indica a Google Analytics que anonimice la información de IP que envía el SDK mediante la eliminación del último octeto de la dirección IP antes de su almacenamiento.

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

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

Si quieres habilitar la funcionalidad de IP anónima de forma programática para un rastreador, usa el método setAnonymizeIp:

mTracker.setAnonymizeIp(true)

Se puede llamar al método setAnonymizeIp en cualquier momento.

Pruebas y depuración

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

Ejecución de prueba

El SDK proporciona una marca dryRun que, cuando se configura, evita que se envíen datos a Google Analytics. La marca dryRun debe establecerse cada vez que pruebas o depuras una implementación y no deseas que los datos de prueba aparezcan en los informes de Google Analytics.

Para configurar la marca de ejecución de prueba, haz lo siguiente:

// 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 realizará registros en logcat con la etiqueta GAv4 mediante el sistema Log de Android. De forma predeterminada, solo los niveles ERROR, WARN e INFO están habilitados. Para habilitar el nivel DEPURACIÓN, 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 de logcat, usa el siguiente comando:

adb logcat -v time -s GAv4

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