GooglaAnalytics は画面遷移状況を取得できる機能を提供しており、
SDKを導入することでアプリから情報を送信することができます。
画面情報を送信する方法は「自動送信」と「マニュアル送信」の2種類があり、それぞれ特徴があります。
自動送信
計測したい ViewController
に GAITrackedViewController
を継承させ、
viewDidLoad:
等でスクリーン名を設定することで、自動で送信することができるようになります。
スクリーン名を設定するだけでよいので、コーディングはラクです。
ただし、TableViewController
などすでに ViewController
を継承しているクラスは、GAITrackedViewController
を継承させることができないため適用できません。
マニュアル送信
マニュアル送信は、ViewWillAppear
等に送信する処理を記述することで手動で情報を送信します。
自動送信より記述量は若干増えます。
すでに ViewController
を継承しているクラスに対しては、マニュアル送信を実装することになりますが、すべてのクラスに一つ一つ実装するのは現実的ではありません。
そこで Aspects というライブラリを使って、ViewController
の viewWillAppear:
にアスペクト指向的に実装する方法を紹介します。
1. プロジェクトに「Aspects」と「GoogleAnalyticsSDK」を追加する
リンク先からライブラリをゲットして、プロジェクトに追加します。
両方ともファイルの追加でいけます。
-
GoogleAnalyticsSDK
https://developers.google.com/analytics/devguides/collection/ios/resources -
Aspects - GitHub
https://github.com/steipete/Aspects
2. Aspects を使って ViewController クラスの ViewWillAppear に送信機能を追加する
AppDelegate.m
の application:didFinishLaunchingWithOptions:
あたりに記述します。
# import "AppDelegate.h"
# import "GAI.h"
# import "GAIFields.h"
# import "GAIDictionaryBuilder.h"
# import "Aspects.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
id tracker = [[GAI sharedInstance] defaultTracker];
// GoogleAnalytics に送信する処理をブロックで記述します
void (^setScreenName)(id<AspectInfo>, BOOL) = ^(id<AspectInfo> aspectInfo, BOOL animated) {
UIViewController * vc = [aspectInfo instance];
// GoogleAnalytics に情報を送信する処理です
// クラス名をそのままスクリーン名にしています
[tracker set:kGAIScreenName value:NSStringFromClass([vc class])];
[tracker send:[[GAIDictionaryBuilder createAppView] build]];
};
// viewWillAppear 実行後に usingBlock を実施するようになります
[UIViewController aspect_hookSelector:@selector(viewWillAppear:)
withOptions:AspectPositionAfter
usingBlock:setScreenName
error:nil];
return YES;
}
以上の処理を追加することで、ViewController
を継承したクラスの viewWillAppear:
実行時に GoogleAnalytics へのスクリーン情報送信が実施されるようになります。
参考URL
GoogleAnalytics - スクリーン送信
https://developers.google.com/analytics/devguides/collection/ios/v3/screens?hl=ja
Objective-CでAOP (アスペクト指向) ができるライブラリ
http://qiita.com/_mpon/items/a08310fa8b777e740372