디스패치

이 문서에서는 Android용 Google 애널리틱스 SDK v4를 사용하여 Google 애널리틱스로 데이터 전달을 관리하는 방법을 설명합니다.

개요

Android용 Google 애널리틱스 SDK v4를 사용하여 수집된 데이터는 로컬에 저장된 후 Google 애널리틱스에 별도의 스레드로 전달됩니다.

데이터는 다음 날 오전 4시(각 보기의 현지 시간대)까지 전달 및 수신되어야 합니다. 이보다 늦게 수신되는 데이터는 보고서에 표시되지 않습니다. 예를 들어 조회가 오후 11시 59분에 로컬로 대기열에 추가된 경우 4시간 이내(오전 3시 59분)까지 전달되어야 보고서에 표시됩니다. 반면 오전 12시에 큐에 추가된 조회는 28시간 이내에, 즉 다음 날 오전 3시 59분 이내에 전달되어야 보고서에 표시됩니다.

주기적인 디스패치

기본적으로 데이터는 30분마다 Android용 Google 애널리틱스 SDK v4에서 전달됩니다.

프로그래매틱 방식으로 전달 기간을 설정하는 방법은 다음과 같습니다.

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

XML 구성 파일에서 전달 기간을 설정하는 방법은 다음과 같습니다.

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

0 또는 음수 값을 설정하면 주기적 전달이 사용 중지되므로 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>