LoginSignup
6
5

More than 5 years have passed since last update.

CarthageでGoogleAnalyticsを導入する

Last updated at Posted at 2018-01-29

背景

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:
トラッキングを仕込んだら、イベントが飛んでいるか、確認しましょう。

6
5
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
6
5