2013 年 12 月 1 日

iOSアプリにGoolge Analytics SDKを組み込む

前回は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は日々更新されていて、ドキュメントの更新が追いつかないことが多いように思います。メソッドの名前やプロパティの名前の変更など、一見何も変更する必要ないのにと思うものもありますが、後から命名が気に入らない、統一性がないと感じることは私自身もあるので、こだわる気持ちはわかります。

関連記事

  1. アンドロイドアプリにGoolge Analytics SDKを組み込む