iOSアプリへの Google Analytics 導入方法

iOSアプリに Google Analytics を導入する方法を以下に記載します。

当記事では、カスタムクラスを使用してスクリーントラッキングとイベントトラッキングを行っています。

導入手順

1. Google Analytics SDKのダウンロード

Downloads - iOS SDK | Google Analytics | Google Developers より最新のSDKをダウンロードし、プロジェクトに追加します。

2. フレームワークの追加

下記 5つのフレームワークをプロジェクトに追加します。

  • libsqlite3.0.dylib
  • libz.dylib
  • SystemConfiguration.framework
  • CoreData.framework
  • AdSupport.framework

3. カスタムクラスの追加

下記のカスタムクラスをプロジェクトに追加します。

TrackingManager.h

1
2
3
4
5
6
7
8
9
10
11
12
#import <Foundation/Foundation.h>
#import "GAI.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"

@interface TrackingManager : NSObject

#pragma mark - public method
+ (void)sendScreenTracking:(NSString *)screenName;
+ (void)sendEventTracking:(NSString *)category action:(NSString *)action label:(NSString *)label value:(NSNumber *)value screen:(NSString *)screen;

@end

TrackingManager.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#import "TrackingManager.h"

@implementation TrackingManager

// スクリーン名を GoogleAnalyticsに送信する
+ (void)sendScreenTracking:(NSString *)screenName
{
    id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];

    // スクリーン名を設定
    [tracker set:kGAIScreenName value:screenName];

    // トラッキング情報を送信する
    [tracker send:[[GAIDictionaryBuilder createScreenView] build]];

    // 送信が終わったらtrackerに設定されているスクリーン名を初期化する
    [tracker set:kGAIScreenName value:nil];
}

// イベントを GoogleAnalyticsに送信する
+ (void)sendEventTracking:(NSString *)category action:(NSString *)action label:(NSString *)label value:(NSNumber *)value screen:(NSString *)screen
{
    id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];

    // スクリーン名を設定
    [tracker set:kGAIScreenName value:screen];

    // イベントのトラッキング情報を送信する
    [tracker send:[[GAIDictionaryBuilder createEventWithCategory:category action:action label:label value:value] build]];
}

@end

4. 初期化

AppDelegate のヘッダファイルに GAI.h をインポートし、実装ファイルのアプリケーション起動時の部分でトラッキングIDを指定し初期化します。

AppDelegate.h

1
2
3
4
5
#import "GAI.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@end

AppDelegate.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- (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:kGAILogLevelNone];

    // Initialize tracker. Replace with your tracking ID.
    [[GAI sharedInstance] trackerWithTrackingId:@"Your Tracking ID"];

    return YES;
}

使用方法

1. カスタムクラスの読み込み

ビューコントローラのヘッダファイルに TrackingManager.h をインポートします。

SampleViewController.h

1
2
3
4
5
#import "TrackingManager.h"

@interface SampleViewController : UIViewController

@end

2-a. スクリーントラッキング

実装ファイルの viewWillAppear 内でスクリーントラッキングを行います。

SampleViewController.m

1
2
3
4
5
6
7
8
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // Google Analytics スクリーントラッキング
    NSString *screenName = NSStringFromClass([self class]);
    [TrackingManager sendScreenTracking:screenName];
}

2-b. イベントトラッキング

例えばボタンをタップした際などにイベントトラッキングを行います。

指定できるのは「カテゴリ」「アクション」「ラベル」「値」「スクリーン名」の 5つで、詳細を正確に指定することにより、コンバージョンの設定が容易になります。

SampleViewController.m

1
2
3
4
5
6
7
- (void)buttonTapEvent:(UIButton *)button
{
    // Google Analytics イベントトラッキング
    NSString *screenName = NSStringFromClass([self class]);
    [TrackingManager sendEventTracking:@"Button" action:@"Tap"
                                 label:@"Label" value:1 screen:screenName];
}

以上で iOSアプリへの Google Analytics 導入は完了になります。

補足

もし正常に動作しない場合は、ビルド設定の Other Linker Flags に「-ObjC」を追加してください。

お薦めの参考書

詳解 Swift 改訂版
Swiftのかなり入り込んだところまで解説しながら、実践コードを多数収録しています。応用本になりますので、入門書を読み終えて中級者から上級者に差し掛かる時に読むことをお勧めします。読み物としてだけではなくリファレンスとしても使用できます。

   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)