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

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

SDK の概要

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

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

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

スタートガイド

要件

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

セットアップ

  • Xcode を開き、新しい iPhone OS プロジェクトを作成します。
  • GANTracker.hlibGoogleAnalytics.a を SDK のライブラリ ディレクトリから新しいプロジェクトにドラッグします。
  • プロジェクトに CFNetwork フレームワークを追加し、libsqlite3.0.dylib に対してリンクします。

モバイルアプリ向け Google アナリティクス SDK は、iOS 2.0 以上を搭載した iPhone または iPod touch でご利用いただけます。このライブラリは、ネイティブ アプリケーションに対応しているすべての iOS バージョンと互換性があります。

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

SDK の使用

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

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

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

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

EasyTracker ライブラリ

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

トラッカーの起動

[GANTracker sharedTracker] で取得したトラッカー シングルトンの startTrackerWithAccountID メソッドを呼び出し、トラッカーを起動します。多くの場合、アプリのデリゲートの applicationDidFinishLaunching メソッドで、このメソッドを直接呼び出すと便利です。ウェブ プロパティ ID、必須のディスパッチ期間、オプションのデリゲートを渡します。例:

#import "BasicExampleAppDelegate.h"

#import "GANTracker.h"

// Dispatch period in seconds
static const NSInteger kGANDispatchPeriodSec = 10;

@implementation BasicExampleAppDelegate

@synthesize window = window_;

- (void)applicationDidFinishLaunching:(UIApplication *)application {
  // **************************************************************************
  // PLEASE REPLACE WITH YOUR ACCOUNT DETAILS.
  // **************************************************************************
  [[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-0000000-1"
                                        dispatchPeriod:kGANDispatchPeriodSec
                                              delegate:nil];

  NSError *error;
  if (![[GANTracker sharedTracker] setCustomVariableAtIndex:1
                                                       name:@"iPhone1"
                                                      value:@"iv1"
                                                  withError:&error]) {
    // Handle error here
  }

  if (![[GANTracker sharedTracker] trackEvent:@"my_category"
                                       action:@"my_action"
                                        label:@"my_label"
                                        value:-1
                                   withError:&error]) {
    // Handle error here
  }

  if (![[GANTracker sharedTracker] trackPageview:@"/app_entry_point"
                                   withError:&error]) {
    // Handle error here
  }

  [window_ makeKeyAndVisible];
}

- (void)dealloc {
  [[GANTracker sharedTracker] stopTracker];
  [window_ release];
  [super dealloc];
}

@end

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

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

カスタム変数の使用

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

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

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

  • addTransaction
  • addItem
  • trackTransactions
  • clearTransactions

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

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

次のサンプルコードを試してみましょう。

  /**
   * The purchase was processed.  We will track the transaction and its associated line items
   * now, but only if the purchase has been confirmed.
   */
- (void) processPurchase:Purchase purchase {
  [[GANTracker sharedTracker] addTransaction:[purchase transactionId]
                                  totalPrice:[purchase totalPrice]
                                   storeName:[purchase store]
                                    totalTax:[purchase tax]
                                shippingCost:[purchase shipping]
                                   withError:&error];
  if (error) {
    // Handle error
  }
  for (PurchaseItem item in [purchase items]) {
    [[GANTracker sharedTracker] addItem:[purchase transactionId]
                                itemSKU:[item itemSKU]
                              itemPrice:[item price]
                              itemCount:[item count]
                           itemCategory:[item category]
                              withError:&error];
    if (error) {
      // Handle error
    }
  }

  if ([purchase isConfirmed]) {
    [[GANTracker sharedTracker] trackTransactions:&error];
  } 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.
    [[GANTracker sharedTracker] clearTransactions:&error];
  }
}

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

匿名 IP

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

設定方法の例を以下に示します。

 [[GANTracker sharedTracker] setAnonymizeIp:YES];

anonymizeIp はいつでも設定できます。

サンプルレートの設定

サンプルレートは、プロパティ sampleRate を使用して設定できます。アプリケーションが大量のアナリティクス トラフィックを生成している場合、サンプリング レートを設定すると、サンプリング データを使用してレポートを生成できない場合があります。サンプリングは一意のユーザー間で一貫して行われるため、サンプルレートが有効になっている場合は [急上昇] と [レポート] に整合性があります。 sampleRate パラメータは NSUInteger で、0 ~ 100 の値を指定できます。sampleRate を 95% に下げる例を次に示します。

 [[GANTracker sharedTracker] setSampleRate:95];

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

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

ヒットのバッチ処理

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

既知の問題

  • 参照 / トラフィック ソース: 現時点では、iOS デバイス上のアプリのダウンロードに関するキャンペーンや参照ソースを追跡することはできません。
  • 次のような場合は、dispatch を呼び出さないことを強くおすすめします。
    • applicationWillTerminate メソッド内
    • applicationDidEnterBackground
    • stopTracker を呼び出す前
    ヒットすると、ヒットが 2 回送信される可能性があります。代わりに、dispatchSynchronous: メソッドを使用します。
  • 別のスレッドで GANTracker メソッドを呼び出すと、SQLite エラーが不明瞭になる可能性があります。すべての通話が同じスレッドから行われるようにします。
  • トラッキング キャンペーン

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

    iOS 向け Google アナリティクス SDK のバージョン 1.3 では、キャンペーンの参照をトラッキングできるようになりました。たとえば、アプリケーションにカスタム URL スキームを実装する場合は、キャンペーンのクエリ パラメータを含む URL を作成できます。このような URL に応じてアプリケーションを起動するときは、クエリ パラメータを取得し、そのパラメータを setReferrer に渡して、Google アナリティクスに情報を格納できます。

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

      [[GANTracker sharedTracker] setReferrer:referrer withError:&error];
    

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

    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