Invio

Questo documento descrive come gestire l'invio dei dati a Google Analytics utilizzando l'SDK Google Analytics v4 per Android.

Panoramica

I dati raccolti utilizzando l'SDK di Google Analytics v4 per Android vengono archiviati in locale prima di essere inviati a Google Analytics in un thread separato.

I dati devono essere inviati e ricevuti entro le 04:00 del giorno successivo, nel fuso orario locale di ogni vista. Tutti i dati ricevuti in un secondo momento non verranno visualizzati nei report. Ad esempio, se un hit viene inserito in coda localmente alle 23:59, deve essere inviato entro 4 ore, entro le 03:59, per essere visualizzato nei report. Al contrario, un hit in coda alle 00:00 deve essere inviato entro 28 ore, ovvero alle 03:59 del giorno successivo, per poter essere visualizzato nei report.

Spedizione periodica

Per impostazione predefinita, i dati vengono inviati dall'SDK Google Analytics v4 per Android ogni 30 minuti.

Per impostare il periodo di spedizione in modo programmatico:

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

Per impostare il periodo di invio nel file di configurazione XML:

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

L'impostazione di un valore pari a zero o negativo disabilita l'invio periodico e richiede l'utilizzo dell'invio manuale se vuoi inviare dati a Google Analytics.

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

Se un utente perde l'accesso alla rete o chiude l'app mentre sono ancora presenti hit in attesa di invio, questi hit vengono mantenuti nello spazio di archiviazione locale. Verranno inviati alla successiva esecuzione dell'app e alla chiamata dell'invio.

Spedizione manuale

Per inviare manualmente gli hit, ad esempio quando sai che la radio del dispositivo viene già utilizzata per inviare altri dati:

GoogleAnalytics.getInstance(this).dispatchLocalHits();

Invio in background

Per attivare l'invio in background su app in esecuzione su dispositivi non Google Play, nel file di configurazione ApplicationManifest.xml:

  • Ottieni l'autorizzazione WAKE_LOCK.
  • Registra AnalyticsReceiver.
  • Registra AnalyticsService.

Ad esempio:

<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>