3

我们正在为我们的 iOS 应用程序评估第三方解决方案或自定义解决方案以进行崩溃报告。我们正在研究 Crashlytics、BugSense、Testflight。他们似乎都服务于目的,即实时崩溃报告。此外,我们一直在按照Xcode 4.2 debug doesn't symbolicate stack call的方式研究自定义解决方案实现

2个问题:

  1. 当我们想要使用它的唯一目的是崩溃报告时,第三方解决方案(Crashlytics、BugSense 等)是否提供了优于自定义解决方案的优势?
  2. 我们可以向自定义异常处理程序添加多少功能,例如,如果我想通过 HTTP post 将堆栈跟踪发布到服务器,我可以在异常处理程序中执行,还是需要等到我的应用程序下一次启动发送日志?异常处理程序应该多久退出?

谢谢, 黑塔尔

4

1 回答 1

3

您不应该编写自己的崩溃报告解决方案,而应使用现有的解决方案,因为编写可靠且安全的崩溃报告器很难。PLCrashReporter的开发人员 Landon Fuller在这篇文章中解释了原因:可靠的崩溃报告

一般来说,一旦发生崩溃,就应该不惜一切代价避免运行任何非异步安全的代码!这意味着必须完全避免使用任何 Objective-C 代码。这也意味着您的崩溃报告应该只在下次启动时发送到您的服务器。您也不应该依赖默认使用 PLCrashReporter 的第 3 方框架,因为该框架还应该执行异步安全操作。

编写自己的异常处理程序几乎不会像基于 PLCrashReporter 的任何东西那样详细、良好和可靠。

除了您提到的第 3 方解决方案之外,还有开源解决方案QuincyKit(基于 PLCrashReporter 以及配套的基于 PHP 的基本服务器解决方案)和HockeyApp,它们也可以与 QuincyKit 客户端一起使用。(注:我是这两种解决方案的开发者之一)

于 2012-08-07T00:43:35.513 回答