繁体   English   中英

如何在 iOS 上报告 Firebase 崩溃的非致命异常?

[英]How to report a non-fatal exception with Firebase crash on iOS?

如何使用 Firebase 崩溃报告在 iOS 上报告非致命异常? 在 Android 中,我们可以这样做:

 FirebaseCrash.report(new Exception("My first Firebase non-fatal error on Android"));

您现在可以在 Firebase Crashlytics 中记录非致命异常

因此,接受的答案不再正确。 可以使用以下 Firebase Crashlytics 方法记录非致命异常:

Crashlytics.crashlytics().record(error: error)

文档

这允许您记录由 NSError 对象描述的非致命事件。 这些事件将与崩溃类似地分组和显示。 请记住,这种方法可能很昂贵。 此外,在您的应用程序生命周期中可以记录的 NSError 总数受固定大小的循环缓冲区的限制。 如果缓冲区溢出,则丢弃最旧的数据。 错误会在您的应用程序随后启动时转发给 Crashlytics。


用法示例:

let userInfo: [String: String] = [
    "deviceId": "someDeviceId",
    "localizedDescription": yourException.localizedDescription,
    "anotherKey": "anotherValue"
]

let domain = "METHOD: some/domain/that/just/had-an-exception"
let code = 404

let error = NSError(domain: domain, code: code, userInfo: userInfo)

Crashlytics.crashlytics().record(error: error)

其中domain是用于 Firebase 的一些漂亮的标识符(例如方法 + 请求路径), code是异常的状态代码(此处为 404),并且userInfo附加数据被转换为键值对并显示在键/日志中个别问题中的部分。

注意:记录的错误按 NSError domaincode分组(与致命错误不同,后者在 Firebase 中按堆栈跟踪分组)。


Firebase Console > Crashlytics示例输出:

显示 Firebase Crashlytics 控制台中非致命异常的示例输出

控制台中的问题详细信息页面(显示userInfo键值对):

Firebase Crashlytics 控制台中非致命异常问题的示例详细信息视图(显示 userInfo 键值对)

珍的回答是正确的。 不过,您可以考虑一些替代方案:

  1. 记录 Firebase Analytics 事件。 虽然这不会为您提供从 Firebase 崩溃报告中获得的所有堆栈跟踪优点,但您至少可以跟踪特定异常随时间发生的频率。

  2. 使用FIRCrashMessage()方法记录您的应用程序中发生的任何错误。 您只会在崩溃报告中看到这些日志方法,这些方法最终会报告给 Firebase 崩溃报告,但鉴于错误通常会导致崩溃,这并不是一个坏主意。

  3. 试试 Crashlytics。 他们有一个专门用于报告非致命错误的reportError()方法。 在您的应用程序中继续使用 Firebase 的其他功能的同时,您可以使用 Crashlytics 进行崩溃报告——现在它们都是同一个母公司。 :)

根据文档,目前只能在 iOS 上报告致命错误。

借助最新版本的 Firebase Crashlytics,您现在可以使用:

Crashlytics.crashlytics().record(error: error)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM