【Swift4】CarthageでGoogleAnalyticsを導入しよう【Xcode9.1】

作成日
更新日

どうも。Reoです。 プロジェクトにGoogleAnalyticsを導入してよって頼まれたので、導入していこうと思うのですが、ググってみてもCocoaPodsでやっている記事ばかりなので、ついでにCarthageでの導入記事を書いていこうと思います。

Carthageの入れ方は割愛させていただきます。入れるときはこちらを参考にした気がします。 [Swift] CocoaPodsの代わりにCarthageを使って、RealmやReactiveCocoaなどを入れてみた。

 

GoogleAnalyticsをプロジェクトに導入しよう!

まずはGitHubより、GoogleAnalytics-Frameworkをインストールさせていただきます。 akashivskyy/GoogleAnalytics-Framework

既にCarthageがインストールされている前提で話を進めさせていただきますね。

Cartfileを編集します。

vi Cartfile

または何かテキストエディタでプロジェクト内のCartifileを開いてその中に

github "akashivskyy/GoogleAnalytics-Framework"

と書いて保存。

そしてターミナルでcarthage updateをします。

carthage update --platform iOS

これが少し時間かかりますが、のんびり待ちます。

インストールが完了したらframeworkをGeneral > Linked Frameworks and Librariesに入れます。

+を押して、AddOtherよりCarthage > Build > iOS > GoogleAnalytics.frameworkを選択

2017-12-【Swift4】CarthageでGoogleAnalyticsを導入しよう【Xcode9.1】-3d01d44364be4faa81d8532f0cad6ad5

 

上記画像のように入ってればおkです。

 

次にBuildPhasesを開き、+ボタンを押し、New Run Script Phaseを選択 既にCarthageがはいっていればそのままそこで。

2017-12-【Swift4】CarthageでGoogleAnalyticsを導入しよう【Xcode9.1】-3a1f53fdc91449428b91349db3a175d3

 

RunScriptのShellの下のところに

/usr/local/bin/carthage copy-frameworks

と追加し、さらにその下のInputFilesのところに

$(SRCROOT)/Carthage/Build/iOS/GoogleAnalytics.framework

と追加。

2017-12-【Swift4】CarthageでGoogleAnalyticsを導入しよう【Xcode9.1】-83b5aed5ee084801a55c107fe3d22965

 

次は「iOS アプリにアナリティクスを追加する  |  iOS 向けアナリティクス  |  Google Developers」に従っていきます。

まずは上記リンクより青色の「設定ファイルを取得」をクリック。

取得はアプリ名だったりBundleIDだったりを言われた通りに記入していけばおkのはずです。

無事取得できたらプロジェクトにぶち込みます。

2017-12-【Swift4】CarthageでGoogleAnalyticsを導入しよう【Xcode9.1】-620829e9f432452e8a7503eaa2e067a9

 

これで導入はおkのはずですー!

 

GoogleAnalyticsの設定をしよう

ここからは「Swift環境でGoogleAnalyticsを設定する - Qiita」の記事を参考にさせていただきました。

コードはちょろっとだけSwift4に対応しているぐらいの違いです。。

 

アプリからアナリティクスにデータを送信できるようにするために、AppDelegate内にごにょごにょ書いていきます。

まずはAppDelegateでGoogleAnalyticsのフレームワークを使えるように

import GoogleAnalytics

を書いておきます。

そいでapplication(_:didFinishLaunchingWithOptions:)内に以下のように書きます。

    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
    }

 

これで初期化処理はおkです。

実際にトラッキングできる設定を、新しくファイルを作って書いていきます。

適当に「GATrackingManager.swift」というファイルを作ります。

GATrackingManager.swiftの中にGATrackingManagerというクラスを作って以下のように書きます。

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内のviewWillAppear(_:)の中にとりあえず書いとけば良いっぽいです。

先ほど作ったクラスの関数を使います。

import UIKit

class ViewController:UIViewController {
    /**  ~~  **/

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        //GAスクリーントラッキング
        GATrackingManager.sendScreenTracking(screenName: "画面名")
    }
}

 

これを書いておくと、viewWillAppear(_:)が呼ばれるたびに画面名がGoogleAnalyticsに送信されます。

この送信された情報は、「GoogleAnalytics」を開いて、サイドメニューのレポート>行動>スクリーンより確認することができます。

 

すぐには反映されませんが、気長に待ちましょう。

 

イベントトラッキング

ユーザから何かアクションがあった際に情報を送信します。

例えばボタン押した時や、検索機能があれば検索ワードを送信する時等に書けばいいんじゃないかなと思います。

    @objc func btnTapped(sender:UIButton){ 
            //GoogleAnalytics送信
            GATrackingManager.sendEventTracking(category: "カテゴリ名", action: "アクション名", label: "ラベル名")

    }

 

イベントトラッキングで送信された情報は、「GoogleAnalytics」を開いて、サイドメニューのレポート> 行動 > イベントにて確認することができます。

 

このカテゴリ名・アクション名・ラベル名はカテゴリ名 > アクション名 > ラベル名といった感じっぽいです。

どう使い分けするかはあなた次第(σ・∀・)σ

 

通常レポートだと反映されるのに時間がかかるので、とりあえず上手く行ってるかどうかはリアルタイムで確認しましょう!(ようやくリアルタイムに気づく・・・)

サイドバーのレポート>リアルタイム>スクリーン or イベントで確認することができます。

 

スクリーンショット貼ってたんですが、規約的によろしくないっぽいので外しました。

統計っていうかメニューのスクリーンショットとかなんだけどCHICKENなので。何かあったら嫌なのでわかりづらいですがお許しを〜〜。

 

ということで実際に導入がてら書いてみました。

自分のアプリには全然統計系は導入してないので、入れてみても良いかもなーって気持ちになりました。そんな難しいもんでもないし。面倒っちゃ面倒だけど。

それではでは〜

参考リンク


追記

(追記日: 2018-04-13)

1週間に1回統計見ればいい方・・・

サイトアイコン
公開日
更新日