iOS版GoogleAnalyticsを利用


iOSアプリで簡単にトラッキングを行おうと考えた時に利用するツールの選択肢の一つとして、GoogleAnalyticsがある。その導入時のメモ。

環境

  • Xcode7.2
  • GoogleAnalytics (iOS) v3.14.0

導入

インストール

CocoaPodsに対応しているので、そちらを利用する。
アナリティクスに限らず、GoogleのiOS版SDKはCocoaPodsに対応しているようだ。

Install a Google SDK using CocoaPods  |  Google APIs for iOS  |  Google Developers

Podfileに記述。

Podfile
platform :ios, '8.0'
use_frameworks!

pod 'GoogleAnalytics'

pod installしてビルド、import GoogleAnalyticsして使おうと思ったらうまく呼び出せず。。原因が解明できなかったので、Bridging-Header を作成して対応。

App-Bridging-Header.h
#ifndef App_Bridging_Header_h
#define App_Bridging_Header_h

#import <GoogleAnalytics/GAI.h>
#import <GoogleAnalytics/GAIFields.h>
#import <GoogleAnalytics/GAILogger.h>
#import <GoogleAnalytics/GAITracker.h>
#import <GoogleAnalytics/GAIDictionaryBuilder.h>

#endif /* App_Bridging_Header_h */

とりあえずこれでG/Aのライブラリを呼び出せるようになった。

設定ファイルの取得

↑上記URLの記載に従い、設定ファイルを取得。前もって、GoogleAnalytics上でのプロジェクトを作成しておく。

情報を入力すると、GoogleService-Info.plistというplistがDLできるので、それをXcodeでプロジェクトに追加しておく。いくつかキーが記載されているが、その中の TRACKING_ID というキーには、アナリティクス上でのID (UA-xxxxxxxx-1 みたいなやつ)が格納されているのが分かる。

利用

初期化

まずはアプリ内でGoogleAnalticsを利用できるよう、AppDelegate.swiftで初期化設定。

AppDelegate.swift
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // G/A初期設定
        let gai = GAI.sharedInstance()
        gai.trackUncaughtExceptions = true

        if let path = NSBundle.mainBundle().pathForResource("GoogleService-Info", ofType: "plist") {
            if let propertyList = NSDictionary(contentsOfFile: path) as? [String: AnyObject] {
                let trackingId = propertyList["TRACKING_ID"] as! String
                gai.trackerWithTrackingId(trackingId)
            }
        }

        ()

    }

end

基本的にはGAIというシングルトンを利用して実装していく。
trackUncaughtExceptionstrueにしておくことで、補足できなかった例外(主にクラッシュ)をアナリティクスに送信することができる。

さらに、先ほどのplistファイルからトラッキングIDを読み込み、トラッカーに設定。これでアプリ内の各viewからアナリティクスにデータを送信する準備が整った。

トラッキング

GATrackingManagerというクラスを作成し、GoogleAnalyticsでアプリ内の遷移を実際にトラッキングできるようにしてみる。

GATrackingManager.swift
import Foundation

class GATrackingManager {

    class func sendScreenTracking(screenName: String) {
        let tracker = GAI.sharedInstance().defaultTracker
        tracker.set(kGAIScreenName, value: screenName)
        tracker.send(GAIDictionaryBuilder.createScreenView().build() as [NSObject: AnyObject])
        tracker.set(kGAIScreenName, value: nil)
    }

}

引数にスクリーン名(どのviewか識別するための名前)をセットして利用。
スクリーン名をsetメソッドで指定、sendメソッドでデータ送信ということをしているだけ。GAIはシングルトンなので、最後にセット済のスクリーン名をnilに戻している。

このクラスメソッドを、以下の例のように各ViewControllerで呼び出すことで、Google Analyticsにデータが送信される。

ViewController.swift
import UIKit

class ViewController: UIViewController {

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

        GATrackingManager.sendScreenTracking("スクリーン名")
    }

end

実装にミスがなければ、Google Analyticsのサイトでデータが送信されていることが確認できる。

以上でメモ終わり。簡単なトラッキングをするだけなら非常に楽だった。