簡體   English   中英

使用 Swift 2.0 時 Google Analytics 崩潰

[英]Google Analytics crash with Swift 2.0

我剛剛從CocoaPods安裝了GoogleAnalytics並嘗試使用它,突然它因錯誤而崩潰:

fatal error: unexpectedly found nil while unwrapping an Optional value

崩潰發生在這部分:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    let tracker = GAI.sharedInstance().defaultTracker
    tracker.set(kGAIScreenName, value: "Main")

    let builder = GAIDictionaryBuilder.createScreenView()
    tracker.send(builder.build() as [NSObject : AnyObject])
}

當到達這條線時:

tracker.set(kGAIScreenName, value: "Main")

也許它與從Objective-C橋接的框架有關?


更新

所以我通過用 if 語句包裝它來修復崩潰,但仍然沒有發送到 Google Analytics:

let name = "Main"
if let gai = GAI.sharedInstance() {
    if let tracker: GAITracker = gai.trackerWithTrackingId("TRACKING_ID") {
        tracker.set(kGAIScreenName, value: name)

        let builder = GAIDictionaryBuilder.createScreenView()
        tracker.send(builder.build() as [NSObject : AnyObject])

        print("tracker initialized")
    }
}

GAI類的文檔有關於defaultTracker

> 為方便起見,這個類公開了一個默認的跟蹤器實例。 這被初始化為 nil 並將被設置為在 trackerWithTrackingId: 中實例化的第一個跟蹤器。 它可以根據需要被覆蓋。

所以我猜你需要在某處調用trackerWithTrackingId: ,或者如果你已經這樣做了,請確保它在調用此方法之前發生。

所以我找到了問題所在,我按照Google Analytics iOS 教程中的說明將Google AnalyticsCocoaPods一起使用,並將此行添加到橋接頭文件中:

#import <Google/Analytics.h>

但我想這還不夠,添加這些行后:

#import <GoogleAnalytics/GAI.h>
#import <GoogleAnalytics/GAIDictionaryBuilder.h>
#import <GoogleAnalytics/GAILogger.h>
#import <GoogleAnalytics/GAITrackedViewController.h>
#import <GoogleAnalytics/GAITracker.h>

它工作完美。 (感謝 Rich Tolley 的幫助)

對我來說,我必須在 AppDelegate 中添加這些行:

var configureError:NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
assert(configureError == nil, "Error configuring Google services: \(configureError)")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM