10分でわかるGoogle Analytics SDK for iOS

iOS Advent Calendar 2011 20日目の寄稿エントリです)

iPhone/iPadアプリをリリースした後にダウンロード数、ランキングをチェックするのは当然ですが、どれだけアプリが使われているのかをチェックすることも重要です。そこで今回はGoogle Analyticsを使ってiOSアプリの使用状況を計測をする方法を紹介したいと思います。

Google Analytics for iOSとは

iOSネイティブアプリ用のGoogle Analyticsなのですが、計測データの送信部分がObjective-Cで書かれているので、画面の表示回数やボタンのクリック数などを計測することが可能です。ちなみに計測結果はWeb版のGoogle Analyticsと同じ管理画面から確認することができます。

Google Analyticsの設定

Google Analyticsのアカウントを持っていない場合は、サイトから作成してください。最初に新しいプロファイルを作成します。
f:id:murapong:20111220135254p:image

「新しいドメインのプロファイルを追加」を選択し、URLを入力します。ただし、今回はダミーのURLで構いません。「タイムゾーンの国または地域」が正しく設定されていることを確認し、「完了」をクリック。
f:id:murapong:20111220135826p:image

トラッキングコードが設置されてない旨のアラートが出ますが、気にせずに次へ進みます。iOSアプリの場合は必要ありません。表示されている「ウェブプロパティID」(例:UA-xxxxxxxx-y)を控えておいてください。後ほど使用します。
f:id:murapong:20111220010053p:image

Google Analytics SDKの導入

SDKのダウンロード

ダウンロードページよりiOS用のAnalytics SDKをダウンロードします。(執筆時のバージョンは1.4)
f:id:murapong:20111220140105p:image

ライブラリの追加

ダウンロードしたSDKを展開し「Library」ディレクトリ内の「GANTracker.h」と「libGoogleAnalytics.a」をプロジェクトに追加します。
f:id:murapong:20111220140239p:image

フレームワークの追加

Xcodeでプロジェクトファイルを開き「TARGETS」でアプリを選択、「Build Phases」「Link Binary With Libraries」の「+」ボタンを押して「CFNetwork.framework」と「libsqlite3.0.dylib」を追加します。
f:id:murapong:20111220140431p:image

以上でGoogle Analytics SDKの導入は完了です。

トラッキングコードの実装

ライブラリのインポート

「<プロジェクト名>-Prefix.pch」で「GANTracker.h」をインポートしておくことで、各ViewControllerで個別にインポートする必要がなくなります。

#import <Availability.h>

#ifndef __IPHONE_3_0
#warning "This project uses features only available in iPhone SDK 3.0 and later."
#endif

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #import "GANTracker.h"
#endif
トラッキングの開始

先ほど控えておいた「ウェブプロパティID」を開始メソッドに設定します。開始メソッドはapplication:didFinishLaunchingWithOptions:内で呼ぶようにします。dispatchPeriodは解析データの送信間隔(秒)となります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-xxxxxxxx-y"
                                           dispatchPeriod:10
                                                 delegate:nil];
    
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}
ページビューのトラッキング

各ViewControllerのviewDidLoadかviewWillAppearでtrackPageview:withError:を呼びます。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    NSError *error;
    if (![[GANTracker sharedTracker] trackPageview:@"/target_page" withError:&error]) {
        // エラーハンドリング
    }
}
イベントのトラッキング

イベントのトラッキングには「カテゴリ」「アクション」「ラベル」の3段階にグループ分けができます。クラス名、メソッド名、パラメータあたりを対応させるのがいいのではないかと思います。ちなみに「カテゴリ」と「アクション」は必須です。

- (IBAction)buttonTapped
{
    NSError *error;
    if (![[GANTracker sharedTracker] trackEvent:@"my_category"
                                         action:@"my_action"
                                          label:@"my_label"
                                          value:-1
                                      withError:&error]) {
        // エラーハンドリング
    }
}

計測結果の確認

新バージョンのGoogle Analyticsの「リアルタイム解析」を使用すれば、ほぼリアルタイムに計測のテストが行えます。Google Analyticsのトップにある[新しいバージョン]のリンクをクリックし、「ホーム」-「リアルタイム解析(ベータ版)」-「サマリー」をクリックします。アプリを操作し計測ログが送信されると、数秒後に計測結果が反映されます。
f:id:murapong:20111220124430p:image

その他

オフライン時の計測データについて

Webと違いiOSアプリはオフライン時にも利用されます。オフライン時のデータは一旦端末に記録されて、オンラインでデータ送信可能なタイミングでまとめて送信されます。

便利なマクロ

以下のサイトを参考にし、マクロを定義しておくと便利です。

以上となります。明日は@yomoappさんです。