Despacho

En este documento, se describe cómo puedes administrar el envío de datos a Google Analytics con la versión 4 del SDK de Google Analytics para Android.

Descripción general

Los datos recopilados con el SDK de Google Analytics v4 para Android se almacenan de forma local antes de despacharlos en un subproceso independiente a Google Analytics.

Los datos deben enviarse y recibirse a más tardar las 4 a.m. del día siguiente, en la zona horaria local de cada vista. Los datos que se reciban después de ese período no aparecerán en los informes. Por ejemplo, si un hit se pone en cola de forma local a las 11:59 p.m., debe despacharse en un plazo de 4 horas (a las 3:59 a.m.) para que aparezca en los informes. Por otro lado, un hit en cola a las 12:00 a.m. debe enviarse en un plazo de 28 horas, es decir, a las 3:59 a.m. del día siguiente, para aparecer en los informes.

Envíos periódicos

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

Para configurar el período de envío de manera programática, sigue estos pasos:

// Set the dispatch period to 90 seconds.
GoogleAnalytics.getInstance(this).setLocalDispatchPeriod(90);

Para establecer el período de envío en el archivo de configuración XML, haz lo siguiente:

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

Si estableces un valor negativo o cero, se inhabilitarán los envíos periódicos, por lo que deberás usar el envío manual si deseas 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 sale de tu app mientras aún hay hits en espera de despacho, esos hits persisten en el almacenamiento local. Se enviarán la próxima vez que se ejecute tu app y se llame al despacho.

Envío manual

Para enviar hits de forma manual, por ejemplo, cuando sabes que la radio del dispositivo ya se está usando para enviar otros datos:

GoogleAnalytics.getInstance(this).dispatchLocalHits();

Envío en segundo plano

Para habilitar el envío en segundo plano en apps que se ejecutan en dispositivos que no son de Google Play, haz lo siguiente en el archivo de configuración ApplicationManifest.xml:

  • Obtén el permiso WAKE_LOCK.
  • Registrar AnalyticsReceiver.
  • Registrar 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>