Help us understand the problem. What is going on with this article?

iOS版GoogleAnalyticsを利用

More than 3 years have passed since last update.

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のライブラリを呼び出せるようになった。

設定ファイルの取得

https://developers.google.com/analytics/devguides/collection/ios/v3/?ver=swift&hl=ja#get-config

↑上記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

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away