【Swift3】【cocoapods】【googleアナリティクス】その2

前回からの続きです。

以前の記事
【cocoapods】でGoogleAnalyticsを導入 その1 | iPhoneアプリ備忘録
を参考に、
設定ファイルを取得する
こちらのページでGoogleService-Info.plist ファイルを作ってダウンロードします。

次はxcodeで作業です。
前回、cocoapodsでgoogleAnalyticsをインストールしたので「.xcworkspace」ファイルを開きます。

ダウンロードしたGoogleService-Info.plist ファイルを Xcode プロジェクトのルートにドラッグして、必要なターゲットに追加します。
スクリーンショット 2016-06-11 11.24.34

んで、アプリ用にアナリティクスを初期化する。
まず 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

【Swift3】【cocoapods】【googleアナリティクス】その2” に2件のコメントがあります

  1. どの記事読んでもダメでハマりまくってたのですが
    このブログの通りにやって無事GA導入できました。
    ありがとうございます!

    純正はこうだけど、実際やったらこうだった
    がめちゃくちゃ助かりました。

    あと
    import Google
    も!

    1. 長尾ユリコさん
      コメントありがとうございます。
      しばらく触ってなくて気づきませんでした。(^_^;)

      お役に立てたなら何よりです。
      楽しんでいきましょう。\(^o^)/

BlackField へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です