Android 向け Google アナリティクス SDK v1(従来版)

Android 向けモバイルアプリ向け Google アナリティクス SDK を使用すると、Android ベースのアプリケーションに Google アナリティクスを簡単に実装できます。このドキュメントでは、SDK をアプリに統合する方法について説明します。

SDK の概要

この SDK は、ユーザーを従来のウェブサイトに誘導し、従来のウェブページ内でウィジェットを操作できるようにするトラッキング モデルを使用します。そのため、以下の用語は従来のウェブサイト トラッキング モデルを反映するものであり、モバイルアプリのトラッキングにマッピングされています。この SDK の仕組みを理解するには、アナリティクスのトラッキングに精通している必要があります。

モバイル トラッキング SDK を使用して、次のタイプのアナリティクス インタラクションで電話アプリをトラッキングします。

ページビューのトラッキング
ページビューは、従来のウェブサイトへのトラフィック量を測定する標準的な方法です。モバイルアプリには HTML ページが含まれていないため、ページビュー リクエストをトリガーするタイミング(および頻度)を決定する必要があります。また、ページビュー リクエストはディレクトリ構造をレポートするように設計されているので、アナリティクスのコンテンツ レポートでページパスの命名を利用するため、リクエストにわかりやすい名前を付けます。選択した名前は、実際には HTML ページではありませんが、ページ階層としてアナリティクス レポートに表示されますが、呼び出しをグループ分けしてパスを構成すると便利です。
イベント トラッキング
アナリティクスでは、イベントは、ウェブページ要素に対するユーザー インタラクションをページビュー リクエストと区別してトラッキングするように設計されています。Google アナリティクスのイベント トラッキング機能を使用すると、アナリティクス レポート インターフェースのイベント トラッキング セクションでレポートされる追加の呼び出しを行うことができます。イベントはカテゴリ別にグループ化され、イベントごとのラベルを使用することもできます。これにより、レポートを柔軟に作成できます。たとえば、マルチメディア アプリでは、video カテゴリに対して再生/停止/一時停止のアクションを用意し、各動画名にラベルを割り当てることができます。Google アナリティクスのレポートでは、動画カテゴリでタグ付けされたすべてのイベントのイベントが集計されます。イベント トラッキングの詳細については、イベント トラッキング ガイドをご覧ください。
e コマース トラッキング
e コマース トラッキング機能を使用して、ショッピング カート トランザクションとアプリ内購入をトラッキングします。 トランザクションをトラッキングするには、Transaction クラスを使用して全体の購入情報を表し、Item クラスを使用してショッピング カート内の各商品を表します。 収集されたデータは、Google アナリティクスのインターフェースの [e コマース レポート] セクションで確認できます。e コマース トラッキングの詳細については、e コマース トラッキング ガイドをご覧ください。
カスタム変数
カスタム変数は、Google アナリティクスのトラッキングの精度を向上させるためにトラッキング コードに挿入できる、名前と値のペアのタグです。カスタム変数の使用方法については、カスタム変数ガイドをご覧ください。

スタートガイド

要件

Google アナリティクスと Android 向けトラッキング機能を Android アプリに統合するには、以下のものが必要です。

セットアップ

  • libGoogleAnalytics.jar をプロジェクトの /libs ディレクトリに追加します。
  • プロジェクトの AndroidManifest.xml マニフェスト ファイルに次の権限を追加します。
    • <uses-permission android:name="android.permission.INTERNET" />
    • <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

サンプル アプリは SDK に付属し、正常にセットアップされた場合のプロジェクトの外観を示しています。独自のアナリティクス統合アプリのテンプレートとして自由にご利用ください。

SDK の使用

SDK の使用を開始する前に、まず www.google.com/analytics で無料アカウントを作成し、偽の、わかりやすいウェブサイトの URL を使用して新しいウェブ プロパティを作成する必要があります(例: http://mymobileapp.mywebsite.com)。プロパティを作成したら、新しく作成したプロパティ用に生成されたウェブ プロパティ ID を書き留めるか、保管します。

アプリケーション内で、または利用規約の中で、アプリ内でのユーザー行動を匿名で追跡して報告する権限を有していることを、ユーザーに明示する必要があります。Google アナリティクス SDK を使用する場合は、Google アナリティクスの利用規約も適用されます(アカウントの登録時に同意する必要があります)。

サンプルとベスト プラクティス

サンプルコードとベスト プラクティスは、code.google.com の analytics-api-samples プロジェクトにあります。

EasyTracker ライブラリ

EasyTracker ライブラリを利用可能。開発作業をほとんど必要とせずに、アプリとアクティビティ レベルのトラッキングが提供されます。この機能は、analytics-api-samples プロジェクトの [ダウンロード] セクションで確認できます。

トラッカーの起動

GoogleAnalyticsTracker.getInstance() を呼び出して、トラッカーのシングルトンを取得します。次に、その startNewSession メソッドを呼び出して、トラッキングされているウェブ プロパティ ID とアクティビティを渡します。アプリにアクティビティが 1 つしかない場合は、アクティビティの onCreate メソッドでこのメソッドを直接呼び出すことができます。例:

package com.google.android.apps.analytics.sample;

import com.google.android.apps.analytics.GoogleAnalyticsTracker;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TestActivity extends Activity {

  GoogleAnalyticsTracker tracker;

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

    tracker = GoogleAnalyticsTracker.getInstance();

    // Start the tracker in manual dispatch mode...
    tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", this);

    // ...alternatively, the tracker can be started with a dispatch interval (in seconds).
    //tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", 20, this);

    setContentView(R.layout.main);
    Button createEventButton = (Button)findViewById(R.id.NewEventButton);
    createEventButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        tracker.trackEvent(
            "Clicks",  // Category
            "Button",  // Action
            "clicked", // Label
            77);       // Value
      }
    });

    Button createPageButton = (Button)findViewById(R.id.NewPageButton);
    createPageButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // Add a Custom Variable to this pageview, with name of "Medium" and value "MobileApp" and
        // scope of session-level.
        tracker.setCustomVar(1, "Navigation Type", "Button click", 2);
        // Track a page view. This is probably the best way to track which parts of your application
        // are being used.
        // E.g.
        // tracker.trackPageView("/help"); to track someone looking at the help screen.
        // tracker.trackPageView("/level2"); to track someone reaching level 2 in a game.
        // tracker.trackPageView("/uploadScreen"); to track someone using an upload screen.
        tracker.trackPageView("/testApplicationHomeScreen");
      }
    });

    Button quitButton = (Button)findViewById(R.id.QuitButton);
    quitButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        finish();
      }
    });

    Button dispatchButton = (Button)findViewById(R.id.DispatchButton);
    dispatchButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // Manually start a dispatch, not needed if the tracker was started with a dispatch
        // interval.
        tracker.dispatch();
      }
    });
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    // Stop the tracker when it is no longer needed.
    tracker.stopSession();
  }
}

アプリに複数のアクティビティがある場合は、analytics-api-samples プロジェクトの [ダウンロード] セクションで用意されている EasyTracker ライブラリを使用できます。

ページビューとイベントのトラッキング

ページビューとイベントのトラッキングはシンプルです。ページビューをトリガーするたびにトラッカー オブジェクトの trackPageView を呼び出すだけです。trackEvent を呼び出して、アクティビティを録画します。ページビューとイベントについて詳しくは、上記の SDK の概要をご覧ください。

カスタム変数の使用

カスタム変数の追加も簡単です。モバイル SDK の setCustomVar メソッドを使用するだけです。各カスタム変数がマッピングされるインデックスは、事前に計画して、既存の変数を上書きしないようにする必要があります。カスタム変数の詳細については、カスタム変数ガイドをご覧ください。setCustomVar メソッドは、それだけでデータを直接送信することはありません。データは、次にトラッキングされたページビューまたはイベントとともに送信されます。ページビューまたはイベントをトラッキングするに、setCustomVar を呼び出す必要があります。カスタム変数のデフォルトのスコープは、「ページ」スコープです。

e コマース トラッキングを使用する

アプリケーションで e コマース トラッキングを有効にする方法は次の 4 つです。

  • addTransaction
  • addItem
  • trackTransactions
  • clearTransactions

addTransactionaddItem を呼び出すと、トランザクションやアイテムが内部 e コマース バッファに追加され、そこにアイテムやトランザクションをさらに追加できます。trackTransactions を呼び出した場合にのみ、トランザクションとアイテムがディスパッチャに送信され、Google アナリティクスに送信されるようにキューに入れられます。

バッファをクリアするには、clearTransactions メソッドを呼び出します。注: ディスパッチャに以前に送信されたトランザクションや Google アナリティクスによってすでに収集されたトランザクションは再現されません。

次のサンプルコードを参考にしてください。onPurchaseCompleted メソッドは、購入の確認時や拒否時に呼び出されることを前提としています。

  /**
   * The purchase was processed.  We will track the transaction and its associated line items
   * now, but only if the purchase has been confirmed.
   *
   * @param purchase A PurchaseObject containing all of the transaction information needed to
   *     send the ecommerce hit to Google Analytics.
   */
  public void onPurchaseCompleted(PurchaseObject purchase) {
    tracker.addTransaction(new Transaction.Builder(
        purchase.getTransactionId(),
        purchase.getTotal())
        .setStoreName(purchase.getStoreName())
        .setTotalTax(purchase.getTotalTax())
        .setShippingCost(purchase.getShippingCost())
        .build());
    for (PurchaseLineItem lineItem : purchase.getLineItems()) {
        tracker.addItem(new Item.Builder(
            purchase.getTransactionId(),
            lineItem.getItemSKU(),
            lineItem.getItemCost(),
            lineItem.getQuantity())
            .setItemName(lineItem.getItemName())
            .setItemCategory(lineItem.getItemCategory())
            .build());
    }
    if (purchase.isConfirmed()) {
      tracker.trackTransactions();
    } else {
      // The purchase was denied or failed in some way.  We need to clear out
      // any data we've already put in the Ecommerce buffer.
      tracker.clearTransactions();
    }
  }

e コマースについて詳しくは、e コマース トラッキング ガイドをご覧ください。

匿名 IP

ユーザーの IP 情報を匿名化するには、setAnonymizeIp メソッドを使用します。これにより、保存する前に IP アドレスの最後のオクテットを削除することで、SDK から送信された情報を匿名化するよう Google アナリティクスに指示します。

setAnonymizeIp はいつでも呼び出すことができます。

サンプルレートの設定

サンプルレートは、setSampleRate メソッドを使用して設定できます。アプリケーションが大量のアナリティクス トラフィックを生成している場合、サンプリング レートを設定すると、サンプリング データを使用してレポートを生成できない場合があります。サンプリングは一意のユーザー間で一貫して行われるため、サンプルレートが有効になっている場合は [急上昇] と [レポート] に整合性があります。 setSampleRate メソッドは、1 つの int パラメータを受け入れます。このパラメータの有効な値は、0 ~ 100 の任意の整数です。

レートを 0 にするとヒットの生成が無効になり、レートが 100 の場合はすべてのデータが Google アナリティクスに送信されます。 トラッキング メソッドを呼び出す前に、setSampleRate を呼び出すことをおすすめします。

サンプリングについて詳しくは、サンプリングのコンセプト ガイドをご覧ください。

ヒットのバッチ処理

接続とバッテリーのオーバーヘッドを節約するために、トラッキング リクエストはバッチ処理することをおすすめします。バッチ リクエストを行う場合、トラッキング オブジェクトで dispatch を呼び出すことができます。また、この呼び出しは、手動または特定の間隔で行うことができます。

既知の問題

  • 異なるスレッドで GoogleAnalyticsTracker メソッドを呼び出すと、不明瞭なエラーが発生することがあります。すべての通話が同じスレッドから行われるようにします。
  • トラッキング キャンペーン

    SDK では 2 種類のキャンペーン トラッキングがサポートされています。

    - Google Play キャンペーンのトラッキング – Google Play からのインストールの参照をトラッキングできます。
    - 一般的なキャンペーン トラッキング - ユーザーをアプリケーションに誘導するキャンペーンを追跡できます。

    Google Play キャンペーン トラッキング

    Android 1.6 OS リリースでは、Google Play へのダウンロード リンクで referrer URL パラメータを使用できます。Android 向け Google アナリティクス SDK では、このパラメータを使用して、アプリケーションの Google アナリティクスにキャンペーン情報が自動的に入力されます。これにより、アプリのインストール元を記録し、今後のページビューやイベントに関連付けることができます。これは、たとえばアプリの特定の広告の効果を測定するうえで役立ちます。

    参照トラッキングを機能させるには、プロジェクトの AndroidManifest.xml マニフェスト ファイルに次のコード スニペットを追加する必要があります。

    <!-- Used for install referrer tracking -->
    <receiver android:name="com.google.android.apps.analytics.AnalyticsReceiver" android:exported="true">
      <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
      </intent-filter>
    </receiver>
    

    Google Play を通じて Google アナリティクスのキャンペーン トラッキングを設定するには、以下の URL 生成ツールを使って紹介用のリンクを生成します。リンクを使用して、ユーザーをアプリケーションに誘導します。Analytics SDK では、参照情報を自動的に解析して記録し、アナリティクス レポートに追加します。

    参照リンクを生成するには、Google Play キャンペーン URL 生成ツールを使用します。パッケージ名キャンペーンのソースキャンペーンのメディアキャンペーン名は必須です。各パラメータの詳細については、以下のをご覧ください。

    一般的なキャンペーン トラッキング

    Android 向け Google アナリティクス SDK のバージョン 1.3 では、Google Play 以外のソース向けのキャンペーンをトラッキングできるようになりました。たとえば、広告内のリンクからアプリが起動されたことを知りたい場合は、アプリを起動した意図でキャンペーンの参照情報を確認し、そのキャンペーン情報を Google アナリティクスに保存できます。

    キャンペーンの参照情報を設定するには、次のように setReferrer メソッドを使用します。

      tracker.setReferrer(referrer);
    

    この機能の使用には 2 つの制限があります。setReferrer を呼び出す前に、startNewSession を呼び出す必要があります。これが必要となるのは、Google アナリティクスで使用される SQLite データベースが startNewSessionsetReferrer を呼び出す前に設定されていないためです。startNewSession を呼び出すことがない場合は、IllegalStateException が返されます。

    2 つ目の制限は、setReferrer に渡される参照文字列が特定の形式に従っている必要があります。URL パラメータのセットという形式で、少なくとも gclid パラメータか、utm_campaign、utm_medium、utm_source の 1 つを含める必要があります。後者の場合、utm_term パラメータと utm_content パラメータも指定できます。

    gclid パラメータは、Google アナリティクスを Google 広告に自動的にリンクする自動タグ設定機能の一部です。自動タグ設定を使用したキャンペーン参照のサンプルは、以下のようになります。

    referrer = “gclid=gclidValue”;
    

    キャンペーンの手動参照文字列は次のようになります。

    referrer = “utm_campaign=campaign&utm_source=source&utm_medium=medium&utm_term=term&utm_content=content”;
    

    形式が不適切な参照文字列を setReferrer に渡した場合、参照 URL 情報は変更されず、戻り値は false になります。戻り値が true の場合、参照 URL が更新され、今後はすべてのヒットに追加されます。

    また、setReferrer を呼び出し、true が返されると、新しいセッションが開始されます。

    パラメータ 必須 説明
    utm_campaign キャンペーン名: キーワード分析で特定の商品プロモーションやキャンペーンを特定するために使用します。 utm_campaign=spring_sale
    utm_source キャンペーンの参照元: 検索エンジンやニュースレターなどの参照元を特定するために使用します。 utm_source=google
    utm_medium キャンペーンのメディア: メールやクリック単価制(cpc)などのメディアを特定するために使用します。 utm_medium=cpc
    utm_term × キャンペーンのキーワード: 広告にキーワードを設定している有料検索で使用します。 utm_term=running+shoes
    utm_content × キャンペーンのコンテンツ: A/B テストやコンテンツ ターゲット広告で、同じ URL を参照する広告やリンクを区別するために使用します。 utm_content=logolink
    utm_content=textlink