LoginSignup
42
42

More than 5 years have passed since last update.

iOS版GoogleAnalyticsを利用

Posted at

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のサイトでデータが送信されていることが確認できる。

スクリーンショット 2015-12-27 18.21.09.png

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

42
42
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
42
42