Envío

En este documento se describe cómo se pueden gestionar los datos de envío a Google Analytics mediante la versión 4 del SDK de Google Analytics para Android.

Descripción general

Los datos recopilados mediante la versión 4 del SDK de Google Analytics para Android se almacenan en el dispositivo antes de enviarlos en un subproceso independiente de Google Analytics.

Los datos se deben enviar y recibir antes de las 4 de la madrugada del día siguiente, en la zona horaria local de cada vista. Los datos que se reciban más tarde no se mostrarán en los informes. Por ejemplo, si se pone en cola un hit en el dispositivo a las 23:59, se debe enviar en un plazo de cuatro horas, antes de las 3:59 de la madrugada, para que aparezca en los informes. Por otro lado, si se pone en cola un hit a medianoche, se debe enviar antes de 28 horas, es decir, antes de las 3:59 del día siguiente, para que se muestre en los informes.

Envío periódico

De forma predeterminada, los datos se envían desde la versión 4 del SDK de Google Analytics para Android cada 30 minutos.

Para establecer el periodo de envío de forma programática:

// Set the dispatch period in seconds.
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(30);

Para establecer el periodo de envío en el archivo de configuración XML:

<integer name="ga_dispatchPeriod">30</integer>

Si configuras un valor que sea negativo o igual a cero, se inhabilitará el envío periódico. En ese caso, deberás usar el envío manual para enviar datos a Google Analytics.

// Disable periodic dispatch by setting dispatch period to a value less than 1.
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(0);

Si un usuario pierde el acceso a la red o cierra la aplicación mientras todavía tiene hits pendientes de envío, los hits se conservan en el almacenamiento local. Se envían la siguiente vez que la aplicación se ejecuta y se activa un envío.

Envío manual

Para enviar los hits manualmente, por ejemplo, si sabes que la radio del dispositivo ya se utiliza para enviar otros datos:

GoogleAnalytics.getInstance(this).dispatchLocalHits();

Envío en segundo plano

Para habilitar el envío en segundo plano en las aplicaciones que se ejecutan en dispositivos que no utilizan Google Play, en el archivo de configuración ApplicationManifest.xml:

  • Obtén el permiso WAKE_LOCK.
  • Registra AnalyticsReceiver.
  • Registra AnalyticsService.

Por ejemplo:

<manifest>
  <!-- ... -->

  <!-- Get permission for reliable local dispatching on non-Google Play devices. -->
  <uses-permission android:name="android.permission.WAKE_LOCK" />

  <application name="com.example.MyApp">
    <!-- Register AnalyticsReceiver and AnalyticsService to support background
         dispatching on non-Google Play devices. -->
    <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
      android:enabled="true">
      <intent-filter>
        <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
      </intent-filter>
    </receiver>
    <service android:name="com.google.android.gms.analytics.AnalyticsService"
      android:enabled="true"
      android:exported="false"/>

    <!-- ... -->
  </application>
</manifest>