【问题标题】:How to report a non-fatal exception with Firebase crash on iOS?如何在 iOS 上报告 Firebase 崩溃的非致命异常?
【发布时间】:2017-10-06 18:39:27
【问题描述】:

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

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

【问题讨论】:

    标签: ios swift firebase crashlytics firebase-crash-reporting


    【解决方案1】:

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

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

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

    来自the documentation

    这允许您记录由 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 中的示例输出:

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

    【讨论】:

      【解决方案2】:

      Jen 的回答是正确的。不过,您可以考虑以下几种替代方案:

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

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

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

      【讨论】:

        【解决方案3】:

        根据the documentation,目前只能在iOS上报fatal错误。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多