Swift版iOSアプリをGoogleアナリティクスで計測する手順(v3.15)

前回、Objective-c版のGoogleアナリティクス実装方法を解説しましたが、今回ははりきってSwift版のGoogleアナリティクス実装方法をご紹介します。

Objective-c版iOSアプリGoogleアナリティクス実装方法

この記事は、Google公式ヘルプを参考に作成しています。
developers.google.com/analytics/devguides/collection/ios/v3/?ver=swift

ただ、Swift版に関しては、本家のGoogleヘルプがやや不親切でしたので実際に実装しながら解説します。スクリーントラッキングのみで、イベントトラッキングなどの実装方法は無いかと思います。

今回、テストでGoogleアナリティクス計測に使ったのは、開発ツールであるXcodeのiOSのサンプルゲームアプリです。起動すると「Hello, World!」と表示され、タッチすると飛行機が出現します。

image03

アプリを起動して上記のスクリーンが表示されときにスクリーン計測を実装します。
スクリーンを表示するとGoogleアナリティクスのリアルタイムレポートでスクリーン名が表示されます。

image07

アプリに戻りスクリーンをタッチすると飛行機が出現します。
飛行機が現れたタイミングでイベントを計測します。

image04

Googleアナリティクスのリアルタイムレポート>イベントでイベントが計測されました。

image11

では早速、Googleアナリティクスの実装方法です。

Googleアナリティクスのプロパティ開設

アプリ計測用のGoogleアナリティクスの解説は簡単なのと他のサイトでも解説しているかと思いますので割愛します。

Webサイトとモバイルアプリの計測データは共存できないため、必ず別プロパティで新規にプロパティを開設する必要があります。

image09

SDKダウンロード

続いて、iOSアプリ用のGoogleアナリティクスSDKをダウンロードします。

Google アナリティクス開発者サービス SDK | iOS 向けアナリティクス | Google Developers
developers.google.com/analytics/devguides/collection/ios/v3/sdk-download#download_sdk

ここではSDKバージョン3.15を例にご説明します。
最新のバージョンアップデートされ、手順が異なることがあります。

「GoogleAnalyticsServicesiOS_3.15.zip」をダウンロードします。

SDKのコピー

XcodeでiOSアプリのプロジェクトを開きます。
Googleアナリティクスのライブラリをプロジェクトに導入します。

  • libGoogleAnalyticsServices.a
  • GoogleAnalytics>Library配下の各種ヘッダーファイル

ヘッダーファイルは必要なものだけ導入します。わからない場合はすべて導入しても問題ないかと思います。

test1

プロジェクトにフォルダを作成して、ファイル群を格納します。

test2

ファイルコピー時のオプションは下記の通りです。
「Copy items if needed」はチェック
「Create groups」を選択

image08

各種ライブラリのリンク

Googleアナリティクスに必要な各種ライブラリをリンクします。
プロジェクトを選択し、General>Linked Frameworks and Librariesから下記のライブラリを追加でリンクします。

  • CoreData.framework
  • SystemConfiguration.framework
  • libz.dylib
  • libsqlite3.dylib
  • libGoogleAnalyticsServices.a

image02

セキュア通信の許可

セキュア通信の許可設定をします。
この設定をしないとGoogleアナリティクスにデータが渡らない可能性があります。

Xcodeのプロジェクトファイル一覧から「Info.plist」を選択します。
無い場合に行として「App Transport Security Settings」を追加作成します。
上記の子要素として「Allow Arbitrary Loads」を作成します。
値は「YES」を設定します。

test3

Bridging Headerの作成

Bridging Headerを作成します。
Objective-c用のヘッダーファイルをSwiftでも利用するために「XXX-Bridging-Header.h」ファイルを作成します。
XXXの部分はプロジェクト名を設定します。

新規ファイル作成から「Header File」を選択します。

image01

Bridging Headerをプロジェクトに設定します。
プロジェクト設定からBuild Settings>Objective-C Bridging Headerを選択します。
(検索ボックスで「Bridging」と検索すると早いです)

XXXXX-Bridging-Header.hを入力します。

image14

XXXX-Bridging-Header.hにインポート文を記述します。

ここでは例としてすべて記載します。

#import "GAI.h"
#import "GAIDictionaryBuilder.h"
#import "GAIEcommerceFields.h"
#import "GAIEcommerceProduct.h"
#import "GAIEcommerceProductAction.h"
#import "GAIEcommercePromotion.h"
#import "GAIFields.h"
#import "GAILogger.h"
#import "GAITrackedViewController.h"
#import "GAITracker.h"

image06

トラッカーの初期設定

トラッカーの初期設定をAppDelegate.swiftファイルに追記します。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        // トラッカーの作成
        let tracker = GAI.sharedInstance()
        tracker.trackerWithTrackingId("UA-XXXXXXXX-X")
  //オプション:例外情報を自動的にGoogleへ送信する
        tracker.trackUncaughtExceptions = true  // report uncaught exceptions
  //コンソールにデバッグ情報を表示する
        tracker.logger.logLevel = GAILogLevel.Verbose  // remove before app release
  //データの送信間隔
        tracker.dispatchInterval = 2

        return true
    }

オプション:起動時のURLを取得する場合にはこちらを記載します
(動作確認中のため非推奨)

    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
        // Override point for customization after application launch.

        
        let urlString: String = url.absoluteString
        // Googleアナリティクスのキャンペーン(UTM)パラメータをテキスト解析し、hitParamsにセット
        let hitParams: GAIDictionaryBuilder = GAIDictionaryBuilder()
        hitParams.setCampaignParametersFromUrl(urlString)
        // キャンペーン計測にのみ必要なキャンペーンフィールド
        // 呼び出し時にキャンペーン(UTM)のソースを設定してなかった場合は、代わりにリファラーとしてホスト名をセット
        if (hitParams.get(kGAICampaignSource) == nil) && url.host?.lengthOfBytesUsingEncoding(NSStringEncoding.allZeros) != 0 {
            // Set campaign data on the map, not the tracker.
            hitParams.set("referrer", forKey: kGAICampaignMedium)
            hitParams.set(url.host, forKey: kGAICampaignSource)
        }
        
        return true
    }

image13

スクリーントラッキングの実装

スクリーントラッキングXXXXViweController.swiftファイルなどの各スクリーンが計測されるように追記します。
ここでは「viewDidLoad()」関数に追記しています。

            //トラッカーの定義
            let tracker = GAI.sharedInstance().defaultTracker
            
            //スクリーントラッキング
            tracker.set(kGAIScreenName, value: "スクリーン名を手動で定義します")
            
            let ScreenBuilder = GAIDictionaryBuilder.createScreenView()
            tracker.send(ScreenBuilder.build() as [NSObject : AnyObject])

スクリーントラッキング+カスタムディメンション
(カスタムディメンションも一緒に設定する場合にはこちらコードになります)

            //トラッカーの定義
            let tracker = GAI.sharedInstance().defaultTracker
            
            //スクリーントラッキング
            tracker.set(kGAIScreenName, value: "スクリーン名を手動で定義します")
            tracker.set(GAIFields.customDimensionForIndex(1), value:"ここにカスタムディメンション1の文字列を定義します")
            
            let ScreenBuilder = GAIDictionaryBuilder.createScreenView()
            tracker.send(ScreenBuilder.build() as [NSObject : AnyObject])

イベントラッキングの実装

イベントトラッキングの実装は、ボタンなどのクリック回数を計測するために実装します。
ここでは「touchesBegan」関数に追記しています。

            //トラッカーの定義
            let tracker = GAI.sharedInstance().defaultTracker

            //イベントトラッキング
            let EventBuilder = GAIDictionaryBuilder.createEventWithCategory("イベントカテゴリ", action: "イベントアクション", label: "イベントラベル", value: nil)
            tracker.send(EventBuilder.build() as [NSObject : AnyObject])


イベントトラッキング+カスタムディメンション
(カスタムディメンションも一緒に設定する場合にはこちらコードになります)

            //トラッカーの定義
            let tracker = GAI.sharedInstance().defaultTracker

            //イベントトラッキング
            let EventBuilder = GAIDictionaryBuilder.createEventWithCategory("イベントカテゴリ", action: "イベントアクション", label: "イベントラベル", value: nil)
            tracker.set(GAIFields.customDimensionForIndex(1), value:"ここにカスタムディメンション1の文字列を定義します")
            tracker.send(EventBuilder.build() as [NSObject : AnyObject])

Googleアナリティクスでの計測確認

Googleアナリティクスにログインし、リアルタイムレポートで動作を確認します。

Googleアナリティクス>レポート>リアルタイムレポート>スクリーン

image07

Googleアナリティクス>レポート>リアルタイムレポート>イベント

image11

カスタムディメンションは、リアルタイムレポートでは確認できないので、時間が立って計測されたことを確認します。
カスタムディメンションは通常レポートでは確認できないので、カスタムレポートを作成して、計測されたことを確認します。

image10

以上が、iOS(Swift版)アプリでのGoogleアナリティクス実装方法でした。

最後に

実装にいくつか手間がかかる部分がありますが、Googleアナリティクスが日々進化しているので、時間の経過とともにもっと簡単に実装できるかもしれません。

実装には基本的なアプリ開発の知識が必要な部分もあるかと思いますので、あわせてiOSアプリの勉強も検証した方がよいかもしれません。

改訂版 No.1スクール講師陣による 世界一受けたいiPhoneアプリ開発の授業 [iOS 9&Xcode 7&Swift 2対応]
桑村 治良 我妻 幸長 高橋 良輔 七島 偉之
技術評論社
売り上げランキング: 172,037
絶対に挫折しない iPhoneアプリ開発「超」入門 増補改訂第4版【Swift 2 & iOS 9】完全対応
高橋 京介
SBクリエイティブ
売り上げランキング: 3,195
無料でできる!世界一やさしいGoogleAnalyticsアクセス解析入門
丸山 耕二
秀和システム
売り上げランキング: 101,132

あなたにオススメ(Amazon)

あなたにオススメ(楽天)