Distribution

Ce document explique comment gérer les données de distribution vers Google Analytics à l'aide du SDK Google Analytics v4 pour Android.

Présentation

Les données collectées à l'aide du SDK Google Analytics v4 pour Android sont stockées localement avant d'être distribuées à Google Analytics sur un thread distinct.

Les données doivent être envoyées et reçues au plus tard à 4h le jour suivant, dans le fuseau horaire local de chaque vue. Les données reçues à une date ultérieure n'apparaîtront pas dans les rapports. Par exemple, si un appel est mis en file d'attente localement à 23h59, il doit être envoyé dans les quatre heures, avant 3h59, pour apparaître dans les rapports. En revanche, un appel mis en file d'attente à minuit doit être envoyé dans un délai de 28 heures, soit 3h59 le lendemain, pour apparaître dans les rapports.

Distribution périodique

Par défaut, les données sont envoyées à partir du SDK Google Analytics v4 pour Android toutes les 30 minutes.

Pour définir la période de distribution par programmation:

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

Pour définir la période de distribution dans le fichier de configuration XML:

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

La définition d'une valeur nulle ou négative désactive l'envoi périodique. Vous devez donc utiliser l'envoi manuel si vous souhaitez envoyer des données à Google Analytics.

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

Si un utilisateur perd l'accès au réseau ou quitte votre application alors qu'il reste des appels en attente d'envoi, ceux-ci sont conservés dans l'espace de stockage local. Ils seront envoyés la prochaine fois que votre application sera en cours d'exécution et que la fonction de distribution sera appelée.

Distribution manuelle

Pour distribuer manuellement les appels, par exemple lorsque vous savez que le signal radio de l'appareil est déjà utilisé pour envoyer d'autres données:

GoogleAnalytics.getInstance(this).dispatchLocalHits();

Distribution en arrière-plan

Pour activer la distribution en arrière-plan pour les applications exécutées sur des appareils autres que Google Play, dans le fichier de configuration ApplicationManifest.xml:

  • Obtenez l'autorisation WAKE_LOCK.
  • Enregistrez AnalyticsReceiver.
  • Enregistrez AnalyticsService.

Exemple :

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