无法收到崩溃报告

时间:2015-11-27 06:10:35

标签: swift google-analytics crash-reports

由于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,但失败了。

我的测试步骤:

  1. 在设备上调试 - >(20s) - >碰撞

  2. 第二次在设备上调试 - >(20s) - >碰撞

  3. 运行应用程序而无需调试 - >(20s) - >碰撞

  4. 运行应用程序而无需调试 - >(20s) - >碰撞

1 个答案:

答案 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异常转发的方法。