詳細設定 - Android SDK v2(従来版)

このドキュメントでは、Google Analytics SDK for Android 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 では、複数のトラッキング ID を 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 に出力されます。