iOSアプリにGoogle Analyticsを入れる

環境

  • Xcode: 7.2
  • GoogleAnalytics: 3.14.0

Google Analyticsの設定

  • 省略

ライブラリのインストール

  • ここを参考に実装をすすめる
  • cocoaPodsを利用する
  • Podfileは以下の通り
source 'http://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'Google/Analytics', '~> 1.0.0'

target 'プロジェクト名' do

end

設定ファイルの作成

  • ここの「設定ファイルを取得」から作成
  • プロジェクトに追加する

アナリティクスの初期化

BridgingHeaderの追加

  • ナビゲータエリア > プロジェクト名のフォルダを右クリック > New File... > iOS > Source > Header Fileからヘッダーファイルを追加(ファイル名: プロジェクト名-Bridging-Header.h
  • TARGETS > プロジェクト名 > Build Settings > Swift Compiler - Code Generation > Objective-C Bridging Header$(SRCROOT)/$(PRODUCT_NAME)/プロジェクト名-Bridging-Header.hを追加
  • ヘッダーファイルの中身は#import <Google/Analytics.h>とする

didFinishLaunchingWithOptionsに設定追加

  • 参考通りに以下のコードを追加 (Xcodeの指示でvarletに変更)
// [START tracker_swift]
// Configure tracker from GoogleService-Info.plist.
var configureError:NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
assert(configureError == nil, "Error configuring Google services: \(configureError)")
        
// Optional: configure GAI options.
let gai = GAI.sharedInstance()
gai.trackUncaughtExceptions = true  // report uncaught exceptions
gai.logger.logLevel = GAILogLevel.Verbose  // remove before app release
// [END tracker_swift]

スクリーントラッキングの追加

  • 参考通りにwillAppearを追加
  • 参考にはlet name = "Pattern~\(self.title!)"で名前を取り、valueにnameをいれていたが、fatal error: unexpectedly found nil while unwrapping an Optional valueとエラーが出てしまうため、文字列を入力する形にした
override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true)
    
//        let name = "Pattern~\(self.title!)"
        
    // The UA-XXXXX-Y tracker ID is loaded automatically from the
    // GoogleService-Info.plist by the `GGLContext` in the AppDelegate.
    // If you're copying this to an app just using Analytics, you'll
    // need to configure your tracking ID here.
    // [START screen_view_hit_swift]
    let tracker = GAI.sharedInstance().defaultTracker
    tracker.set(kGAIScreenName, value: "ViewController")
        
    let builder = GAIDictionaryBuilder.createScreenView()
    tracker.send(builder.build() as [NSObject : AnyObject])
    // [END screen_view_hit_swift]
}