高度な構成 - Android SDK v2(従来版)

このドキュメントでは、Android 向け Google アナリティクス SDK v2 の高度な設定機能の概要を説明します。

概要

Android 向け Google アナリティクス SDK は、2 つのクラスを使って実装のグローバルな状態を管理し、Google アナリティクス サーバーへデータを送信します。EasyTracker はこれらのクラスをラップし、設定とセッション管理を簡素化します。

  • GoogleAnalytics - Tracker オブジェクトの取得など、実装のグローバルな状態を処理するシングルトン。
  • Tracker - Google アナリティクスにデータを送信するクラス。

たとえば、シンプルな Activity の視聴を測定するには、次のようにします。

import android.app.Activity

import com.google.analytics.tracking.android.GoogleAnalytics
import com.google.analytics.tracking.android.Tracker

/**
 * A simple Activity that sends a screen view to Google Analytics
 * when it is displayed to the user.
 */
public class HomeScreen extends Activity {

  private Tracker mGaTracker;
  private GoogleAnalytics mGaInstance;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Get the GoogleAnalytics singleton. Note that the SDK uses
    // the application context to avoid leaking the current context.
    mGaInstance = GoogleAnalytics.getInstance(this);

    // Use the GoogleAnalytics singleton to get a Tracker.
    mGaTracker = mGaInstance.getTracker("UA-XXXX-Y"); // Placeholder tracking ID.
    ... // The rest of your onCreate() code.
  }

  @Override
  public void onStart() {
    super.onStart();

    // Send a screen view when the Activity is displayed to the user.
    mGaTracker.sendView("/HomeScreen");
  }
}

複数のトラッカーの使用

SDK のバージョン 2 では、1 つの実装で複数のトラッカー(一意のトラッキング ID ごとに 1 つ)を使用できます。すべてのトラッカーは、GoogleAnalytics シングルトンが保持する同じグローバル状態を共有します。

次の例では、それぞれ固有のプロパティ ID を持つ 2 つのトラッカーを使用して、スクリーンビューが 2 つの別々のプロパティに送信されます。

import android.app.Activity

import com.google.analytics.tracking.android.GoogleAnalytics
import com.google.analytics.tracking.android.Tracker

/**
 * A simple Activity that sends a screen view to Google Analytics
 * when it is displayed to the user.
 */
public class HomeScreen extends Activity {

  private GoogleAnalytics mGaInstance;
  private Tracker mGaTracker1;
  private Tracker mGaTracker2;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Get the GoogleAnalytics singleton.
    mGaInstance = GoogleAnalytics.getInstance(this);

    // Use the GoogleAnalytics singleton to get two Trackers with
    // unique property IDs.
    mGaTracker1 = mGaInstance.getTracker("UA-XXXX-Y");
    mGaTracker2 = mGaInstance.getTracker("UA-XXXX-Z");

    ... // The rest of your onCreate() code.
  }

  @Override
  public void onStart() {
    super.onStart();

    // Send a screen view to "UA-XXXX-Y" the Activity is displayed to the user.
    mGaTracker1.sendView("/HomeScreen");

    // Send another screen view to the second property, "UA-XXXX-Z".
    mGaTracker2.sendView("/Home");
  }
}

EasyTracker の自動測定機能は、デフォルトのトラッカーのみを使って呼び出しを行います。EasyTracker の機能を使用していて、他のトラッカーを使用してデータを送信する場合は、手動で行う必要があります。

デフォルト トラッカー

実装は複数のトラッカーを使用できますが、全体的にはデフォルトのトラッカーが 1 つあります。最初に取得した Tracker がデフォルトのトラッカーになります。

デフォルトのトラッカーを取得するには、次のコマンドを使用します。

// Get singleton.
GoogleAnalytics myInstance = GoogleAnalytics.getInstance(this);

// Get default tracker.
Tracker myDefault = myInstance.getDefaultTracker();

デフォルトのトラッカーを設定するには、以下を使用します。

// First get a tracker using a new property ID.
Tracker newTracker = myInstance.getTracker("UA-XXXX-2");

// Then make newTracker the default tracker globally.
myInstance.setDefaultTracker(newTracker);

ディスパッチ

ディスパッチ設定は、GAServiceManager シングルトンによって管理されます。ディスパッチ期間を設定するには:

// Set dispatch period to 30 seconds.
GAServiceManager.getInstance().setDispatchPeriod(30);

スケジュールされた間隔外に手動でディスパッチするには:

// Manually dispatch any queued hits.
GAServiceManager.getInstance().dispatch();

サンプリング

クライアント サイドでサンプリングを行って、Google アナリティクスに送るヒット数を制限することができます。アプリのユーザー数が極めて多い場合や、Google アナリティクスに送るデータが膨大な場合は、サンプリングを行うことで間断なくレポート作成を継続できるようになります。

たとえば、EasyTracker と XML を使用してクライアントサイドのサンプリングを 50% のレートで有効にするには、analytics.xml ファイルで次のパラメータを使用します。

<string name="ga_sampleFrequency">50.0</string>

クライアントサイドのサンプリングをプログラムで有効にすることもできます。

// Get tracker from singleton.
GoogleAnalytics gaInstance = GoogleAnalytics.getInstance(this);
Tracker tracker = gaInstance.getTracker("UA-XXXX-Y"); // Placeholder property ID.

// Set a sample rate of 50%.
tracker.setSampleRate(50.0d);

アプリ単位のオプトアウト

アプリレベルのオプトアウト フラグを有効にすると、アプリ全体で Google アナリティクスを無効にできます。このフラグは、一度設定すると、アプリの存続期間またはリセットされるまで保持されます。

アプリ単位のオプトアウト設定を取得するには、次のコードを使用します。

// Get singleton.
GoogleAnalytics myInstance = GoogleAnalytics.getInstance(this);

// Get the app opt out preference using an AppOptOutCallback.
myInstance.requestAppOptOut(new AppOptOutCallback() {
   @Override
   public void reportAppOptOut(boolean optOut) {
     if (optOut) {
     ... // Alert the user that they've opted out.
     }
   });
}

アプリ単位のオプトアウト フラグを設定するには、次のコマンドを使用します。

myInstance.setAppOptOut(appPreferences.userOptOut);

テストとデバッグ

Android 向け Google アナリティクス SDK にはデバッグモードがあり、Google アナリティクスに送信されているデータに関する有用な情報をログに出力できます。

EasyTracker を使用してデバッグモードを有効にするには、analytics.xml リソース ファイルに次の行を追加します。

<bool name="ga_debug">true</bool>

デバッグモードをプログラムで有効にするには、次のコマンドを使用します。

// Get singleton using application context.
GoogleAnalytics myInstance = GoogleAnalytics.getInstance(this);

// Enable debug mode.
myInstance.setDebug(true);

出力は、タグ GAV2 を使用して logcat に出力されます。