由于Parse崩溃报告正在贬值,我们正在转向Google Analytics。 我按照指南成功接收了视图跟踪和异常报告。
这是我如何设置GA
// 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.trackerWithTrackingId("UA-XXXXXX-1")
gai.trackUncaughtExceptions = true // report uncaught exceptions
gai.dispatchInterval = 1
gai.defaultTracker.allowIDFACollection = true
#if DEBUG
gai.logger.logLevel = GAILogLevel.Verbose // remove before app release
#endif
我试图通过(在AppDelegate.swift didFinishLaunchingWithOptions中)崩溃:
delay(20.0) { () -> () in
let _ = [String]()[10];
}
我无法从GA信息中心获得任何崩溃报告。
我试图将此行移至IBAction,但失败了。
我的测试步骤:
在设备上调试 - >(20s) - >碰撞
第二次在设备上调试 - >(20s) - >碰撞
运行应用程序而无需调试 - >(20s) - >碰撞
运行应用程序而无需调试 - >(20s) - >碰撞
答案 0 :(得分:1)
事实证明,Google Analytics仅支持报告未捕获的Objective-C异常。它没有报告Swift投掷。以下内容创建了一个Swift投掷(GA未报告):
let crashArray:Array = [0]
crashArray[1]
以下确实创建了一个Objective-C异常,由GA报告:
let array = NSArray()
let _ = array.objectAtIndex(99)
这里有一些有用的信息......
How should I use NSSetUncaughtExceptionHandler in Swift
我们可以使用以下命令(即从catch中)强制从Swift中获取Objective-C异常。
let error = NSError(domain: "Some error.", code: 0, userInfo: nil)
NSException.raise("Exception", format:"Error: %@", arguments:getVaList([error ?? "nil"]))
我无法找到自动捕获所有抛出并将其作为Objective-C异常转发的方法。