pixyzehn blog

iPhone App, Mac App, Programming, Web service, Tool, Evernote, etc

Google Analytics SDK for iOS v3の導入手順

http://www.flickr.com/photos/32110556@N03/8191245592
photo by bluefountainmedia


今後使うことがあると思うのでメモっておきます。


ここではiOSにSDKを追加してビルドして実際に計測されていることを確認するところまでやってみたいと思います。


まずSDKを追加します。


https://developers.google.com/analytics/devguides/collection/ios/resources?hl=ja


上記からGoogle Analytics SDK for iOS v3をダウンロードし、解凍します。


後の作業はGoogle Analytics SDK for iOS v3公式の手順を参考にしてもよいとは思うのですが、必要そうのないものも含まれているのでクラスメソッドさんの記事を参考にしました。*1


解凍すると以下のようなファイルがあるので


f:id:inagex:20140517132932p:plain


・GAI.h
・GAITracker.h
・GAITrackedViewController.h
・GAIDictionaryBuilder.h
・GAIFields.h
・GAILogger.h
・libGoogleAnalyticsServices.a


のファイルをライブラリ等を管理している(任意の)プロジェクトのグループに追加します。


次にフレームワークを追加していきます。

CoreData.framework
SystemConfiguration.framework


僕の場合は_sqlite3がないというエラーが生じたので以下のフレームワークを追加しました。

libsqlite3.dylib


そうしてビルドしてエラーが生じなければSDKの導入がおそらく完了です。


アプリ名-Prefix.pchファイルに以下を記述します。

#ifdef __OBJC__
     *****
     *****
    // google analytics
    #import "GAI.h"
#endif


これで毎回GAI.hをインポートすることなくGAを計測することができます。


次にAppDelegate.mファイルのdidFinishLaunchingWithOptionsメソッドを編集していきます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // initialization: Google Analytics
    GAI *gai = [GAI sharedInstance];
    // オプション: 例外を自動的にGoogle Analyticsに送る.
    gai.trackUncaughtExceptions = YES;
    // オプション: トラッキング間隔 20秒
    gai.dispatchInterval = 20;
    // ログレベルを変えることができる
    [[gai logger] setLogLevel:kGAILogLevelError];
    
    [gai trackerWithTrackingId:GOOGLE_ANALYTICS_ID];
    
    return YES;
}


GOOGLE_ANALYTICS_IDには自分のGAのトラッキングIDを記入します。


これで初期設定が終了です。


GAの設定の方法には以下の2パターンがあります。

・ビューコントローラーに書く(自動タイプ)
・テーブルビューコントローラーに書く(手動タイプ)

自動タイプの場合

// GAITrackedViewController.hをインポート
#import "GAITrackedViewController.h"

// UIViewControllerのサブクラスから、GAITrackedViewControllerに変更する
@interface CenterViewController : GAITrackedViewController

// viewDidLoadに以下の一文を追加
self.screenName = @"CenterViewController";


これでビューコントローラーの画面計測ができます。

手動タイプの場合

// インポート
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"

// viewDidLoadに以下を追加
[[GAI sharedInstance].defaultTracker trackView:@"FavoriteViewController"];


これでテーブルビューコントローラーの画面計測ができます。


しかしtrackViewが定義されてないとエラーが出たので以下に変更しました。

id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:GA_ID];
[tracker set:kGAIScreenName value:@"FavoriteViewController"];
[tracker send:[[GAIDictionaryBuilder createAppView]  build]];


GA_IDはトラッキングIDを定義しています。


_OBJC_CLASS_$_ファイル名, referenced fromというエラーが出てビルドできなかったのですが、このエラーは多くの場合、ディレクトリにはファイルが存在しいているが、Xcodeがそのファイルの場所を把握できていないときに起こるそうです。


http://d.hatena.ne.jp/bi_na/20111121/1321855527


libGoogleAnalyticsServices.aを再度Xcodeに追加したらビルド成功しました。

計測確認


Google Analyticsで確認してみます。


まず自動タイプです。


f:id:inagex:20140517141439p:plain


次は手動タイプです。


リアルタイムで確認すると少々タイムラグがありますが


f:id:inagex:20140517141721p:plain


きちんと表示されました。


webよりもちょっと面倒ですが、少しでも参考になればと思います。