6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?