如何使用本机崩溃报告在 Swift 4 中实现 Exception/Error 处理?

How to implement Exception/Error Handling in Swift 4 with native Crash Reporting?

我想在我的[=28]中实现本地崩溃报告不使用推荐的第 3 方库) =] Swift 4 代码 并在 应用程序崩溃 [=21] 时通过 API 调用 通知我的后端服务器=] 或生成任何 异常 。我发现 App Store / iTunes Connect 提供了崩溃的数量,但它 不提供崩溃信息 例如来自哪个 UIViewController 或由于哪个错误而崩溃。谁能帮我解决这个问题?提前致谢。

是的,您必须创建自定义崩溃报告管理器,并且可以使用 NSSetUncaughtExceptionHandler 获取崩溃报告堆栈。

例子

NSSetUncaughtExceptionHandler { exception in

    print(exception)
    print(exception.callStackSymbols)

    // Write callStackSymbols into the file
    // Call your mail function with that file
    // mail()
}

let array = NSArray()
let element = array.object(at: 4)

您可以将该崩溃报告写入文件并邮寄。

正如您在问题中所说,iTunes 仅提供崩溃次数,但不提供崩溃信息

实际上,XCode 本身会为您提供完整的崩溃详细信息,包括行号、设备信息、构建详细信息等。

在这里,我描述了如何从 Xcode

中获取 崩溃的详细信息
  1. 前往 'Window' -> 'Organizer' xcode

  1. 新 window 打开,select 您的应用程序名称来自左侧的应用程序列表,select Crashes 来自顶部段控件。

  1. 现在,您可以 select 您想要的版本(甚至您可以 select 您在 testflight 上传的 Beta 版本),一旦您 select 版本,您将获得该版本的所有崩溃。您可以在下图中看到,它显示了设备的详细信息、线程的详细信息等。

  1. 现在,如果您想转到发生崩溃的行。只需将鼠标悬停在崩溃详细信息中的粗线处,您就会看到如下图所示的箭头按钮。单击该按钮后,Xcode 会将您重定向到项目中的相关行。

我想,关于如何从实时应用程序中查看崩溃,您现在已经很清楚了。