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 には、標準の Thumb バージョンと NoThumb バージョンのライブラリが付属しています。NoThumb バージョンのライブラリを使用するには、libGoogleAnalytics.a ファイルではなく libGoogleAnalytics_NoThumb.a ファイルを使用します。

スタートガイド

要件

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

設定

  • Xcode を開き、新しい iPhone OS プロジェクトを作成します。
  • GANTracker.hlibGoogleAnalytics.a を SDK の Library ディレクトリから新しいプロジェクトにドラッグします。
  • プロジェクトに 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 プロジェクトの [Downloads] セクションにあります。

トラッカーの起動

[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 に設定します。 これにより、Google アナリティクスでは、IP アドレスを保存する前にアドレスの最後のオクテットを削除することで、SDK から送信された情報を匿名化します。

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

 [[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 データベースが、startTrackerWithAccountID を呼び出す前にセットアップされておらず、setReferrer がそのデータベースを必要とするためです。startTrackerWithAccountID を呼び出していない場合は、エラーが返されます。

    2 つ目の制限は、setReferrer に渡される参照文字列が特定の形式に従う必要があることです。URL パラメータのセットの形式をとり、gclid パラメータを少なくとも 1 つ、または 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”;
    

    不正な形式の参照 URL 文字列を 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