iOS
GoogleAnalytics
Swift
Carthage

CarthageでGoogleAnalyticsを導入する

背景

QiitaにCarthage+GoogleAnalyticsの記事がなかったので、手順をまとめました:relaxed:

環境

  • Xcode 8.3.2
  • Swift 3.1

手順

Carthageのインストール

Carthageのインストール手順は他の記事を参考にしてください:relaxed:
参考:Carthageについて

Cartfileの編集とcarthage update

Cartfileの編集

vi Cartfile

Cartfile内に以下の記述を追加

github "akashivskyy/GoogleAnalytics-Framework"

carthageをupdate

carthage update --platform iOS

Frameworkの追加

  • General > Linked Frameworks and Libraries で + を選択
  • Add Otherを選択
  • Carthage > Build > iOS > GoogleAnalytics.frameworkを選択
  • 以下のように追加されていればOK スクリーンショット 2018-01-29 22.52.08.png

Run Scriptの追加

既にCarthageがはいっていればこの操作は必要ありません

  • BuildPhasesを開き、+を選択
  • New Run Script Phaseを選択
  • Run Script Shellに以下を追加
    • /usr/local/bin/carthage copy-frameworks

Run ScriptのInput Filesに設定

以下を設定
$(SRCROOT)/Carthage/Build/iOS/GoogleAnalytics.framework
以下のようになっていればOK
スクリーンショット 2018-01-29 23.05.29.png

設定ファイルを取得しプロジェクトにファイルを追加する

スクリーントラッキングやイベントトラッキングを設定

GoogleAnalyticsの初期化設定

AppDelegate.swift
import GoogleAnalytics
AppDelegate.swift
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        // GoogleAnalyticsの設定
        if let gai = GAI.sharedInstance() {
            gai.trackUncaughtExceptions = true

            if let path = Bundle.main.path(forResource: "GoogleService-Info", ofType: "plist") {
                if let propertyList = NSDictionary(contentsOfFile: path) as? [String: AnyObject] {
                    let trackingID = propertyList["TRACKING_ID"] as! String
                    gai.tracker(withTrackingId: trackingID)
                }
            }
        }

        return true
    }

GATrackingManager.swiftを追加

以下のようなファイルを作成します。

GATrackingManager.swift
import GoogleAnalytics

class GATrackingManager {

    //スクリーントラッキング
    class func sendScreenTracking(screenName: String) {
        if let tracker = GAI.sharedInstance().defaultTracker {
            tracker.set(kGAIScreenName, value: screenName)
            tracker.send(GAIDictionaryBuilder.createScreenView().build() as [NSObject: AnyObject])
            tracker.set(kGAIScreenName, value: nil)
        }
    }

    //イベントトラッキング
    class func sendEventTracking(category: String, action: String, label: String) {
        if let tracker = GAI.sharedInstance().defaultTracker {
            tracker.send(GAIDictionaryBuilder.createEvent(withCategory: category, action: action, label: label, value: nil).build() as [NSObject: AnyObject])
        }
    }

}

スクリーントラッキング

任意のViewController
import UIKit

class ViewController:UIViewController { 
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        //GAスクリーントラッキング
        GATrackingManager.sendScreenTracking(screenName: "画面名")
    }
}

イベントトラッキング

    @objc func btnTapped(sender:UIButton){ 
            //GAイベントトラッキング
            GATrackingManager.sendEventTracking(category: "カテゴリ名", action: "アクション名", label: "ラベル名")

    }

GoogleAnalyticsで確認

GoogleAnalyticsの画面から設定することはありません。楽ちんですね:hugging:
トラッキングを仕込んだら、イベントが飛んでいるか、確認しましょう。