SDK de Google Analytics para Android v1 (heredado)

El SDK de Google Analytics para aplicaciones para dispositivos móviles de Android facilita la implementación de Google Analytics en aplicaciones basadas en Android. En este documento, se describe cómo integrar el SDK en tus apps.

Descripción general del SDK

Este SDK usa un modelo de seguimiento diseñado para hacer un seguimiento de los usuarios a sitios web tradicionales y a la interacción con widgets en páginas web tradicionales. Por este motivo, los términos que se usan a continuación reflejan el modelo convencional de seguimiento de sitios web y se asignan al seguimiento de las aplicaciones para dispositivos móviles. Debes familiarizarte con el seguimiento de Analytics para comprender cómo funciona este SDK.

Usa el SDK de seguimiento para dispositivos móviles a fin de realizar un seguimiento de tus aplicaciones para teléfonos con los siguientes tipos de interacción de Analytics:

Seguimiento de vistas de página
Una vista de página es un medio estándar para medir el volumen de tráfico a un sitio web tradicional. Dado que las apps para dispositivos móviles no contienen páginas HTML, debes decidir cuándo (y con qué frecuencia) activar una solicitud de vista de página. Además, dado que las solicitudes de vistas de página están diseñadas para generar informes sobre las estructuras de directorio, debes proporcionar nombres descriptivos para las solicitudes a fin de aprovechar la denominación de la ruta de la página en los Informes de contenido de Analytics. Los nombres que elijas se propagarán en los informes de Analytics como rutas de la página aunque, en realidad, no sean páginas HTML. Puedes aprovechar esto si estructuras las rutas de acceso para proporcionar agrupaciones adicionales para las llamadas.
Seguimiento de eventos
En Analytics, los eventos están diseñados para hacer un seguimiento de la interacción del usuario con los elementos de la página web de manera diferenciada de las solicitudes de vistas de página. Puedes usar la función de seguimiento de eventos de Google Analytics para realizar llamadas adicionales que se informarán en la sección de seguimiento de eventos de la interfaz del informe de Analytics. Los eventos se agrupan mediante categorías y también pueden usar etiquetas por evento, lo que proporciona flexibilidad en los informes. Por ejemplo, una app multimedia podría tener acciones de reproducir/detener/pausar para su categoría de video y asignar una etiqueta a cada nombre de video. Luego, los informes de Google Analytics agregarían eventos para todos los eventos etiquetados con la categoría video. Para obtener más información sobre el seguimiento de eventos, consulta la Guía para el seguimiento de eventos
.
Seguimiento de comercio electrónico
Usa la función de seguimiento de comercio electrónico para realizar un seguimiento de las transacciones del carrito de compras y de las compras directas desde la aplicación. Para realizar el seguimiento de una transacción, usa la clase Transaction para representar la información general de la compra, así como la clase Item para representar cada producto en el carrito de compras. Una vez recopilados, los datos se pueden ver en la sección de informes de comercio electrónico de la interfaz de Google Analytics. Para obtener más información sobre el seguimiento de comercio electrónico, consulta la Guía para el seguimiento de comercio electrónico.
Variables personalizadas
Las variables personalizadas son etiquetas de par nombre-valor que puedes insertar en tu código de seguimiento para definir mejor el seguimiento de Google Analytics. Para obtener más información sobre cómo usar las variables personalizadas, consulta la Guía sobre variables personalizadas.

Cómo comenzar

Requisitos

Para integrar las funciones de seguimiento de Google Analytics con tu aplicación para Android, necesitarás lo siguiente:

Configuración

  • Agrega libGoogleAnalytics.jar al directorio /libs de tu proyecto.
  • Agrega los siguientes permisos al archivo de manifiesto AndroidManifest.xml de tu proyecto:
    • <uses-permission android:name="android.permission.INTERNET" />
    • <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Se incluye una aplicación de ejemplo con el SDK que demuestra cómo debería verse tu proyecto si se configuró correctamente. No dudes en utilizarla como plantilla para tus propias aplicaciones integradas con Analytics.

Usa el SDK

Antes de comenzar a utilizar el SDK, debes crear una cuenta gratuita en www.google.com/analytics y crear una nueva propiedad web en esa cuenta con una URL de sitio web falsa pero descriptiva (p.ej., http://mymobileapp.mywebsite.com). Una vez que crees la propiedad, anota o mantén una copia del ID de propiedad web que se genera para la propiedad recién creada.

Debe indicar a sus usuarios, ya sea en la aplicación o en las Condiciones del Servicio, que se reserva el derecho de realizar un seguimiento anónimo de la actividad de un usuario dentro de su aplicación y denunciarla. El uso que haga del SDK de Google Analytics también se rige por las Condiciones del Servicio de Google Analytics, que debe aceptar cuando se registre para obtener una cuenta.

Ejemplos y prácticas recomendadas

Puedes encontrar el código de muestra y las prácticas recomendadas en code.google.com, en el proyecto analytics-api-samples.

Biblioteca de EasyTracker

Hay una biblioteca de EasyTracker disponible. Proporciona un seguimiento a nivel de la aplicación y la actividad casi sin ningún esfuerzo de desarrollo. Puedes encontrarlo en la sección Descargas del proyecto analytics-api-samples.

Cómo iniciar el seguimiento

Obtén el singleton de seguimiento llamando a GoogleAnalyticsTracker.getInstance(). Luego, llama a su método startNewSession y pasa el ID de propiedad web y la actividad de la que se hace un seguimiento. Puedes llamar a este método directamente en el método onCreate de tu actividad si tu aplicación solo tiene una actividad. Por ejemplo:

package com.google.android.apps.analytics.sample;

import com.google.android.apps.analytics.GoogleAnalyticsTracker;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TestActivity extends Activity {

  GoogleAnalyticsTracker tracker;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    tracker = GoogleAnalyticsTracker.getInstance();

    // Start the tracker in manual dispatch mode...
    tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", this);

    // ...alternatively, the tracker can be started with a dispatch interval (in seconds).
    //tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", 20, this);

    setContentView(R.layout.main);
    Button createEventButton = (Button)findViewById(R.id.NewEventButton);
    createEventButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        tracker.trackEvent(
            "Clicks",  // Category
            "Button",  // Action
            "clicked", // Label
            77);       // Value
      }
    });

    Button createPageButton = (Button)findViewById(R.id.NewPageButton);
    createPageButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // Add a Custom Variable to this pageview, with name of "Medium" and value "MobileApp" and
        // scope of session-level.
        tracker.setCustomVar(1, "Navigation Type", "Button click", 2);
        // Track a page view. This is probably the best way to track which parts of your application
        // are being used.
        // E.g.
        // tracker.trackPageView("/help"); to track someone looking at the help screen.
        // tracker.trackPageView("/level2"); to track someone reaching level 2 in a game.
        // tracker.trackPageView("/uploadScreen"); to track someone using an upload screen.
        tracker.trackPageView("/testApplicationHomeScreen");
      }
    });

    Button quitButton = (Button)findViewById(R.id.QuitButton);
    quitButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        finish();
      }
    });

    Button dispatchButton = (Button)findViewById(R.id.DispatchButton);
    dispatchButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // Manually start a dispatch, not needed if the tracker was started with a dispatch
        // interval.
        tracker.dispatch();
      }
    });
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    // Stop the tracker when it is no longer needed.
    tracker.stopSession();
  }
}

Si tienes varias actividades en tu aplicación, puedes utilizar la biblioteca de EasyTracker proporcionada en la sección Descargas del proyecto analytics-api-samples.

Seguimiento de vistas de página y eventos

Hacer un seguimiento de las vistas de página y los eventos es sencillo: simplemente llama al trackPageView del objeto de seguimiento cada vez que desees activar una vista de página. Llama a trackEvent para grabar un evento. Para obtener más información sobre las páginas vistas y los eventos, consulta la Descripción general del SDK más arriba.

Cómo usar variables personalizadas

Agregar una variable personalizada también es sencillo: solo usa el método setCustomVar que proporciona el SDK para dispositivos móviles. Te recomendamos que planifiques con anticipación qué índices se asignan a cada variable personalizada para que no reemplaces ninguna variable existente. Para obtener más información, consulta la Guía sobre variables personalizadas. Ten en cuenta que el método setCustomVar no envía datos directamente por sí solo. En su lugar, los datos se envían con la siguiente vista de página o evento con seguimiento. Debes llamar a setCustomVar antes de realizar un seguimiento de una vista de página o un evento. Ten en cuenta que el alcance predeterminado de las variables personalizadas se limita a la página.

Utiliza el seguimiento de comercio electrónico

Existen 4 métodos que puedes usar para habilitar el seguimiento de comercio electrónico en tu aplicación:

  • addTransaction
  • addItem
  • trackTransactions
  • clearTransactions

Llamar a addTransaction y addItem agrega la transacción o el elemento a un búfer de comercio electrónico interno, al que se pueden agregar más elementos y transacciones. Solo cuando llames a trackTransactions, las transacciones y los elementos se enviarán al despachador y se agregarán a la cola para enviarse a Google Analytics.

Para borrar el búfer, puedes llamar al método clearTransactions. Nota: No recuerda ninguna transacción que se haya enviado previamente al despachador ni ninguna transacción que ya haya recopilado Google Analytics.

Usa el siguiente código de muestra para comenzar. Suponemos que se llama al método onPurchaseCompleted cuando se confirma o se rechaza la compra.

  /**
   * The purchase was processed.  We will track the transaction and its associated line items
   * now, but only if the purchase has been confirmed.
   *
   * @param purchase A PurchaseObject containing all of the transaction information needed to
   *     send the ecommerce hit to Google Analytics.
   */
  public void onPurchaseCompleted(PurchaseObject purchase) {
    tracker.addTransaction(new Transaction.Builder(
        purchase.getTransactionId(),
        purchase.getTotal())
        .setStoreName(purchase.getStoreName())
        .setTotalTax(purchase.getTotalTax())
        .setShippingCost(purchase.getShippingCost())
        .build());
    for (PurchaseLineItem lineItem : purchase.getLineItems()) {
        tracker.addItem(new Item.Builder(
            purchase.getTransactionId(),
            lineItem.getItemSKU(),
            lineItem.getItemCost(),
            lineItem.getQuantity())
            .setItemName(lineItem.getItemName())
            .setItemCategory(lineItem.getItemCategory())
            .build());
    }
    if (purchase.isConfirmed()) {
      tracker.trackTransactions();
    } else {
      // The purchase was denied or failed in some way.  We need to clear out
      // any data we've already put in the Ecommerce buffer.
      tracker.clearTransactions();
    }
  }

Para obtener más información sobre el comercio electrónico, consulta la Guía de seguimiento de comercio electrónico.

Anonimizar IP

Para anonimizar la información de IP del usuario, usa el método setAnonymizeIp. Esto le indica a Google Analytics que debe anonimizar la información que envía el SDK mediante la eliminación del último octeto de la dirección IP antes de su almacenamiento.

Puedes llamar a setAnonymizeIp en cualquier momento.

Configuración de la tasa de muestreo

Puedes configurar la tasa de muestreo con el método setSampleRate. Si tu aplicación genera mucho tráfico de Analytics, configurar la tasa de muestreo puede impedir que tus informes se generen con una muestra de datos. El muestreo se produce de manera coherente con usuarios únicos, por lo que hay integridad en las tendencias y en los informes cuando la tasa de muestreo está habilitada. El método setSampleRate acepta un parámetro int. Los valores válidos para ese parámetro son cualquier número entero entre 0 y 100, inclusive.

Una tasa de 0 desactiva la generación de hits, mientras que una tasa de 100 envía todos los datos a Google Analytics. Es mejor llamar a setSampleRate antes de llamar a cualquier método de seguimiento.

Puedes obtener más información sobre el muestreo en la Guía de conceptos de muestreo.

Agrupación de hits en lotes

Para ahorrar en gastos de conexión y de batería, te recomendamos que envíes tus solicitudes de seguimiento por lotes. Puedes llamar a dispatch en el objeto de seguimiento cada vez que desees realizar una solicitud por lotes, ya sea de forma manual o en intervalos de tiempo específicos.

Problemas conocidos

  • Llamar a los métodos de GoogleAnalyticsTracker en diferentes subprocesos puede generar errores desconocidos. Asegúrate de realizar todas las llamadas desde la misma conversación.
  • Seguimiento de campañas

    El SDK admite dos tipos de seguimiento de campañas.

    - Seguimiento de campañas de Google Play: Te permite hacer un seguimiento de las referencias de instalación a través de Google Play.
    - Seguimiento de campañas generales: Te permite realizar un seguimiento de cualquier campaña que refiera a los usuarios a tu aplicación.

    Seguimiento de campañas de Google Play

    La versión 1.6 del SO Android admite el uso de un parámetro de URL referrer en los vínculos de descarga de Google Play. El SDK de Google Analytics para Android usa este parámetro para propagar automáticamente la información de la campaña en Google Analytics para tu aplicación. Esto permite que la fuente de la instalación de la aplicación se registre y se asocie con futuras vistas de página y eventos, lo que puede ser útil, por ejemplo, para medir la eficacia de un anuncio particular para tu app.

    Para que funcione el seguimiento de referencias, debes agregar el siguiente fragmento de código al archivo de manifiesto AndroidManifest.xml de tu proyecto:

    <!-- Used for install referrer tracking -->
    <receiver android:name="com.google.android.apps.analytics.AnalyticsReceiver" android:exported="true">
      <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
      </intent-filter>
    </receiver>
    

    Si deseas configurar el seguimiento de campañas de Google Analytics a través de Google Play, usa el creador de URLs que aparece a continuación para generar un vínculo de referencia. Usa el vínculo para dirigir a los usuarios a tu aplicación. El SDK de Analytics analizará y registrará automáticamente la información de referencia y la propagará en tu informe de Analytics.

    Para generar el vínculo de referencia, puedes usar el Creador de URLs para campañas de Google Play. Los campos Package Name, Campaign Source, Campaign Medium y Campaign Name son obligatorios. Para obtener una descripción detallada de cada parámetro, consulta la tabla que figura a continuación.

    Seguimiento general de campañas

    Con la versión 1.3 del SDK de Google Analytics para Android, ahora puedes realizar un seguimiento de las campañas de fuentes distintas de Google Play. Por ejemplo, si quieres saber si tu aplicación se inició desde un vínculo en un anuncio, puedes buscar información de referencia de la campaña en el intent que causó el lanzamiento de tu aplicación y, luego, almacenar la información de esa campaña en Google Analytics.

    Para establecer la información de referencia de la campaña, usa el método setReferrer de la siguiente manera:

      tracker.setReferrer(referrer);
    

    Existen dos restricciones para el uso de esta función. Primero, debes llamar a startNewSession antes de llamar a setReferrer. Debes hacerlo porque la base de datos SQLite que usa Google Analytics no está configurada antes de llamar a startNewSession, y setReferrer necesita esa base de datos. Si no llamaste a startNewSession, obtendrás un IllegalStateException.

    La segunda restricción es que la cadena de referencia que se pasa a setReferrer debe seguir un formato específico. Debe tener la forma de un conjunto de parámetros de URL y debe incluir, al menos, un parámetro gclid o uno de cada uno de los parámetros utm_campaign, utm_medium y utm_source. En el último caso, también puede tener los parámetros utm_term y utm_content.

    El parámetro gclid forma parte de la función de etiquetado automático que vincula automáticamente Google Analytics con Google Ads. Una referencia de campaña de muestra con el etiquetado automático podría verse de la siguiente manera:

    referrer = “gclid=gclidValue”;
    

    La cadena de referencia de la campaña manual podría ser similar a la siguiente:

    referrer = “utm_campaign=campaign&utm_source=source&utm_medium=medium&utm_term=term&utm_content=content”;
    

    Si pasas una cadena de referencia con formato incorrecto a setReferrer, la información de referencia no se cambiará y obtendrás un valor falso. Un valor que se muestra con el valor "true" indica que la URL de referencia se actualizó y se agregará a cada hit de ahora en adelante.

    Además, ten en cuenta que se iniciará una nueva sesión cuando llames a setReferrer y el resultado será verdadero.

    Parámetro Obligatorio Descripción Ejemplos
    utm_campaign Nombre de la campaña; se utiliza para el análisis de palabras clave para identificar la promoción de un producto específico o una campaña estratégica utm_campaign=spring_sale
    utm_source Fuente de la campaña; se utiliza para identificar un motor de búsqueda, un boletín informativo o cualquier otra fuente utm_source=google
    utm_medium Medio de la campaña; se usa para identificar un medio, como el correo electrónico o el costo por clic (cpc) utm_medium=cpc
    utm_term No Término de la campaña; se utiliza con la búsqueda pagada para proporcionar las palabras clave para los anuncios utm_term=running+shoes
    utm_content No Contenido de la campaña; se utiliza para pruebas A/B y anuncios segmentados por contenido para diferenciar los anuncios o vínculos que dirigen a la misma URL utm_content=logolink
    utm_content=textlink