ディスパッチ

このドキュメントでは、Android 向け Google アナリティクス SDK v4 を使って、Google アナリティクスへのデータのディスパッチを管理する方法を説明します。

概要

Android 向け Google アナリティクス SDK v4 を使って収集されたデータは、 別のスレッドで Google アナリティクスにディスパッチされるまでローカルに保存されます。

データのディスパッチと受け取りは、各ビューのローカル タイムゾーンで 翌日の午前 4 時までに行う必要があります。それ以降に受信された データはレポートに表示されません。たとえば、午後 11 時 59 分にローカルなキューに送られたヒットをレポートに表示するには、4 時間以内(午前 3 時 59 分まで)にディスパッチする必要があります。一方、午前 12 時にキューに送られたヒットをレポートに表示するには、28 時間以内(翌日の午前 3 時 59 分まで)にディスパッチする必要があります。

定期的なディスパッチ

Android 向け Google アナリティクス SDK v4 では、デフォルトで 30 分おきにデータが ディスパッチされます。

ディスパッチの間隔をプログラムで設定する方法は次のとおりです。

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

ディスパッチの間隔を XML 設定ファイルで指定する方法は次のとおりです。

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

ゼロまたは負の値を設定すると定期的なディスパッチが無効となり、 Google アナリティクスにデータを送るには手動によるディスパッチ が必要になります。

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

ディスパッチを待つヒットが残っている間に、ネットワーク接続が切れたり、ユーザーが アプリを終了したりした場合、残りのヒットはローカル ストレージで保持され、次にアプリが起動するか、ディスパッチが呼び出されたときにディスパッチされます。

手動によるディスパッチ

ヒットを手動でディスパッチする方法は次のとおりです。手動によるディスパッチは、対象デバイスの無線が既に別のデータの送信に使われているとわかっている場合などに使用します。

GoogleAnalytics.getInstance(this).dispatchLocalHits();

バックグラウンドでのディスパッチ

Google Play 以外のデバイスで実行されているアプリでバックグラウンド ディスパッチを有効にするには、構成ファイル ApplicationManifest.xml で次のようにします。

  • WAKE_LOCK 権限を取得する。
  • AnalyticsReceiver を登録します。
  • AnalyticsService を登録します。

次に例を示します。

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