前回からの続きです。
以前の記事
【cocoapods】でGoogleAnalyticsを導入 その1 | iPhoneアプリ備忘録
を参考に、
設定ファイルを取得する
こちらのページでGoogleService-Info.plist ファイルを作ってダウンロードします。
次はxcodeで作業です。
前回、cocoapodsでgoogleAnalyticsをインストールしたので「.xcworkspace」ファイルを開きます。
ダウンロードしたGoogleService-Info.plist ファイルを Xcode プロジェクトのルートにドラッグして、必要なターゲットに追加します。
んで、アプリ用にアナリティクスを初期化する。
まず AppDelegate にアナリティクスを追加します。
#import <Google/Analytics.h>
と入力すると、エラー。あれ?なんか書き方変わった?
#import <Google/Analytics.h> import <Google/Analytics.h> import Google/Analytics.h import Analytics.h import Analytics import google
いろいろ試しても全然通らない。(#^ω^)ビキビキ
色々検索して参考になったのがこちら。
Implement Google Analytics in ios swift – Stack Overflow
import Google
これでええんか(^_^;)。
ええとこまで推理できてたのになあ。(笑)
まあ良いかと続けてコード入力
import UIKit import Google @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //ぐーぐるアナリティクス。 // 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 以下略
んがっ、またつまづいた。orz
GAIなんて知らんよ〜とエラー。
なんかいろいろいろと調べてたらBridging Headerとやらを作ると良いとか。
参考
xcode – Use of unresolved identifier GGLContext and GAI – Stack Overflow
だんだんややこしくなってくる。
Bridging Headerの作り方はこちらを参考にした。
Swift: Bridging-Header 作成・設定方法(Xcode 7.2 対応) | siro:chro
ただこちらのサイトの通りに
$(SRCROOT)/$(PRODUCT)/Bridging-Header.h
と書くと何故かフルパスがおかしくなったので
$(SRCROOT)/アプリのフォルダ名/Bridging-Header.h
としたらうまく行った。
Bridging-Header.hの中身はこうした。
#ifndef Bridging_Header_h #define 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" #endif /* Bridging_Header_h */
んで再度ビルドしようとすると、gaiに?を付けてくれ、ってのと、.VerboseのVを小文字にしてくれと言われたので変更。
これで一応ビルドできるまでになった。
AppDelegate.swiftはこんな感じ。
import UIKit import Google @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //ぐーぐるアナリティクス。 // 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 // Override point for customization after application launch. return true }
続いてviewController.swiftでスクリーントラッキングをしこむ。
これが呼ばれたらアナリティクスにピコーンと知らされる。
純正は
let tracker = GAI.sharedInstance().defaultTracker tracker.set(kGAIScreenName, value: "トラッキングの名前") let builder = GAIDictionaryBuilder.createScreenView() tracker.send(builder.build() as [NSObject : AnyObject])
となっていたが、色々と修正が加わって
let tracker = GAI.sharedInstance().defaultTracker tracker?.set(kGAIScreenName, value: "トラッキングの名前") let builder = GAIDictionaryBuilder.createScreenView() tracker?.send(builder?.build() as [NSObject : AnyObject]!)
こうなった。
特に[NSObject : AnyObject]の部分はSwift3で変わったという話だったが色々と変更してもうまく行かず、
後ろに!を付けることでなんとかなったようだ。
今後もアナリティクス入れるたびにこういう処理をしないといかんと思うとめんどくさいねー。orz
どの記事読んでもダメでハマりまくってたのですが
このブログの通りにやって無事GA導入できました。
ありがとうございます!
純正はこうだけど、実際やったらこうだった
がめちゃくちゃ助かりました。
あと
import Google
も!
長尾ユリコさん
コメントありがとうございます。
しばらく触ってなくて気づきませんでした。(^_^;)
お役に立てたなら何よりです。
楽しんでいきましょう。\(^o^)/