LoginSignup
16
18

More than 5 years have passed since last update.

iOSアプリから GoogleAnalytics にスクリーン情報を送信する

Last updated at Posted at 2014-07-24

GooglaAnalytics は画面遷移状況を取得できる機能を提供しており、
SDKを導入することでアプリから情報を送信することができます。

画面情報を送信する方法は「自動送信」と「マニュアル送信」の2種類があり、それぞれ特徴があります。

自動送信

計測したい ViewControllerGAITrackedViewController を継承させ、
viewDidLoad: 等でスクリーン名を設定することで、自動で送信することができるようになります。

スクリーン名を設定するだけでよいので、コーディングはラクです。

ただし、TableViewController などすでに ViewController を継承しているクラスは、GAITrackedViewController を継承させることができないため適用できません。

マニュアル送信

マニュアル送信は、ViewWillAppear 等に送信する処理を記述することで手動で情報を送信します。
自動送信より記述量は若干増えます。

すでに ViewController を継承しているクラスに対しては、マニュアル送信を実装することになりますが、すべてのクラスに一つ一つ実装するのは現実的ではありません。

そこで Aspects というライブラリを使って、ViewControllerviewWillAppear: にアスペクト指向的に実装する方法を紹介します。

1. プロジェクトに「Aspects」と「GoogleAnalyticsSDK」を追加する

リンク先からライブラリをゲットして、プロジェクトに追加します。
両方ともファイルの追加でいけます。

2. Aspects を使って ViewController クラスの ViewWillAppear に送信機能を追加する

AppDelegate.mapplication:didFinishLaunchingWithOptions: あたりに記述します。

AppDelegate.m
#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

16
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
18