Google AnalyticsにはiOS版があり、アプリ内の画面操作に仮想的なURLを割り当てることで、Webサイトと同じように”アクセス解析”ができる。
インストール
公式サイトからSDKをダウンロードして展開、Libraryディレクトリの中に入っている GANTracker.h と libGoogleAnalytics.a を自分のプロジェクトにコピーする(もう一つの libGoogleAnalytics_NoThumb.a はThumb命令を無効にしたプロジェクトで使用するもの。標準のプロジェクトでは必要ない)。
次にXcodeでプロジェクトファイルを開き「TARGETS」でアプリを選択、「Build Phases」「Link Binary With Libraries」を開いて、「+」ボタンを押してCFNetworkフレームワークとlibsqlite3.0.dylibを追加する。ちなみに libGoogleAnalytics.a はプロジェクトにコピーした段階で追加されているはず。
使用方法
公式サイトのドキュメントを読めばわかる通り、トラッキングの概念や使い方はWeb用のGoogle Analyticsとほぼ同じなので、迷うことはないだろう。ただトラッキング用のメソッドを実行してもすぐにはGoogleサーバーにデータが送られず、一定の時間(初期化時に dispatchPeriod として指定する)ごとにまとめて送られるという動作が異なる。あと GANTracker.h のコメントにはサイトに書いていない有用な情報が含まれているので、そちらもチェックした方が良い。下記の便利マクロに使っている知識もそこから得た。
便利マクロ
http://d.hatena.ne.jp/ninjinkun/20110115/1295074900
ここで紹介されているマクロが便利なので改造して使わせていただいている。自分で追加・変更した内容は以下の通り。
初期化マクロ
GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE)
GAアカウントと送信間隔とdelegateの設定を行う、初期化用のマクロ。定義は下のようになる。
#define __GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE) \ [[GANTracker sharedTracker] startTrackerWithAccountID:ACCOUNT \ dispatchPeriod:PERIOD \ delegate:DELEGATE]; #ifdef DEBUG #define GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE) { \ __GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE); \ [GANTracker sharedTracker].debug = YES; \ [GANTracker sharedTracker].dryRun = YES; } #else #define GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE) __GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE); #endif
DEBUGマクロが定義されていた場合限り debug プロパティと dryRun プロパティが有効になる。debug プロパティを有効にするとデータがサーバに送られるタイミングでコンソールにログが出る(生の__utm.gifに対するリクエストログ)。dryRun プロパティを有効にすると実際のサーバにはデータが送られない。
ページトラッキング
GA_TRACK_PAGE(PAGE)
元サイトのものとほぼ同じだが、trackPageview:withError: は先頭に / がない場合は自動で付加してくれるので、その部分の処理を省いている。この方が / 付きのパス(NSURLから得たパスなど)をそのまま使えるので便利。
#define GA_TRACK_PAGE(PAGE) { \ NSError *error; \ if (![[GANTracker sharedTracker] trackPageview:PAGE withError:&error]) { NSLog(@"%@",error.helpAnchor); } };

