前回はAndroidOSアプリにGoogle Analytics SDK(v3.01)を組み込みました。iOSのSDKも同様にv3.0となっています。
v3.0になってから若干インタフェースも変わっているようですが、公式サイトのドキュメントに従っても、動作しない点があったので、その点に関して説明しておきます。
恐らく、ドキュメントが更新されていないのと、若干誤った記述があるように思います。
SDKの入手方法
以下のサイトから入手するか、また、Google Analyticsでモバイル用のプロパティを作成した後、ダウンロードを促すページが表示されますので、そこからもダウンロードできます。現時点(13/11/26)ではv3.02が最新となっています。
iOS Native Application Tracking Overview
Google Analytics SDK for iOS – Migrating to v3
古いバージョンからの移行に関するリソースも読む方がよいと思います。現時点ではどちらにも誤りあると思いますので、気をつけてください(13/11/26)。
ライブラリをインポート
ダウンロードしたzipファイルを展開して、GoogleAnalyticsServicesiOS_3.02/GoogleAnalytics/Library以下のファイルを全てプロジェクトにインポートします。スクリーンショットのXcodeは5.0.2です。
ここにあるlibGoogleAnalyticsServices_debug.aはデバッグ用なので、正式なものは、トップディレクトリのlibGoogleAnalyticsServices.aを使う方がよいでしょう。
- GAI.h
- GAIDictionaryBulder.h
- GAIFields.h
- GAILogger.h
- GAITrackedViewController.h
- GAITracker.h
- libGoogleAnalyticsServices_debug.a
その他のライブラリ
これ以外に以下のライブラリをプロジェクトにインポートする必要があります。プロジェクトを選択して、Build Pharases->Link Vinary With Librariesの+アイコンをクリックしてライブラリを追加してください。
- CoreData.framework
- SystemConfiguration.framework
- libz.dylib
Trackerの初期化
アプリケーションデリゲートクラスのdidFinishLaunchingWithOptionsに以下のコードを追加します。UA-XXXX-Yはご自身のアカウントを指定ください。また、ログレベルはご自由に指定ください。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Optional: automatically send uncaught exceptions to Google Analytics. [GAI sharedInstance].trackUncaughtExceptions = YES; // Optional: set Google Analytics dispatch interval to e.g. 20 seconds. [GAI sharedInstance].dispatchInterval = 20; // Optional: set Logger to VERBOSE for debug information. [[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose]; // Initialize tracker. id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-Y"];
UIViewControllerではなく、GAITrackedViewControllerを継承
計測したいビューはUIViewControllerではなく、GAITrackedViewControllerを継承します。automatic screen measurementでの設定だけなら、viewDidAppearメソッドに以下のコードを追加します。
ドキュメントでは以下のように記述されていますが、しかし、これではコンパイルが通りません。
- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.trackedViewName = @"About Screen"; }
ここは以下のように修正します。
- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.screenName = @"About Screen"; }
しかし、これでもまだ、だめです。記録されません。
ログを確認すると「(GATrackedViewController.m:21): Tracked view controller missing viewname.」と表示されています。トラッキングはさきほど継承したGATrackedViewControllerのviewDidAppearで処理されるはずですから、当然、先にスクリーン名を設定しないと、正しいスクリーン名が取得できません。
最終的には以下のように修正します。
- (void)viewDidAppear:(BOOL)animated { self.screenName = @"About Screen"; [super viewDidAppear:animated]; }
Google Analyticsレポートを開いて、リアルタイムでアクセスが確認できれば、設定は完了です。
多くのSDKは日々更新されていて、ドキュメントの更新が追いつかないことが多いように思います。メソッドの名前やプロパティの名前の変更など、一見何も変更する必要ないのにと思うものもありますが、後から命名が気に入らない、統一性がないと感じることは私自身もあるので、こだわる気持ちはわかります。