我找到了一种在 Crashlytics Android SDK 中记录自定义捕获的异常的方法,但我在 iOS SDK 中找不到类似的东西。有没有办法在 iOS 上使用 Crashlytics 记录捕获的异常?
见安卓解释: http: //support.crashlytics.com/knowledgebase/articles/202805-logging-caught-exceptions
我找到了一种在 Crashlytics Android SDK 中记录自定义捕获的异常的方法,但我在 iOS SDK 中找不到类似的东西。有没有办法在 iOS 上使用 Crashlytics 记录捕获的异常?
见安卓解释: http: //support.crashlytics.com/knowledgebase/articles/202805-logging-caught-exceptions
来自 Crashlytics 和 Fabric 的 Mike 在这里。
您现在可以在您的 iOS、tvOS 或 OS X 应用程序中捕获记录的 NSErrors。你想使用:
[CrashlyticsKit recordError:error];
或者
Crashlytics.sharedInstance().recordError(error)
这将让您在每个用户会话中捕获相当数量的已记录 NSError。这些仅在应用重新启动时发送。记录的错误错误按错误域和代码分组。这意味着错误问题可能跨越许多不同的呼叫站点。
查看文档
最后 Crashlytics 添加了所需的功能 3.5.0!
[CrashlyticsKit recordError:error];
或者
Crashlytics.sharedInstance().recordError(error)
参考
/**
*
* This allows you to record a non-fatal event, described by an NSError object. These events will be grouped and
* displayed similarly to crashes. Keep in mind that this method can be expensive. Also, the total number of
* NSErrors that can be recorded during your app's life-cycle is limited by a fixed-size circular buffer. If the
* buffer is overrun, the oldest data is dropped. Errors are relayed to Crashlytics on a subsequent launch
* of your application.
*
* You can also use the -recordError:withAdditionalUserInfo: to include additional context not represented
* by the NSError instance itself.
*
**/
- (void)recordError:(NSError *)error;
- (void)recordError:(NSError *)error withAdditionalUserInfo:(nullable CLS_GENERIC_NSDICTIONARY(NSString *, id) *)userInfo;
https://docs.fabric.io/ios/changelog.html#january-7-2016
历史
这实际上不像我预期的那样工作:消息保存到 Crashlytics 但只有在应用程序重新启动后才会保存最后一条消息。
到目前为止,这里提到的解决方案都不起作用。无法使用 Crashlytics 跟踪 iOS 中处理的异常。
您可以使用它来记录任何异常
[[Crashlytics sharedInstance] recordCustomExceptionName:@"HandledException" reason:@"Some reason" frameArray:@[]];
在 Crashlytics 中,您将在崩溃报告中看到它,但带有NON-FATALS
类型。
如果不是,则事件的预期使用异常以与 Android 处理异常相同的方式记录。
这在版本 3.0.7 中可用。
记录自定义异常名称:原因:frameArray:
此方法可用于在报告中记录单个异常结构。这在您的代码与 Lua、C# 或 Javascript 等非本地语言交互时特别有用。此调用可能很昂贵,并且只能在进程终止前不久使用。此 API 不打算用于记录 NSException 对象。Crashlytics 会自动捕获所有可安全报告的 NSException。
无法使用 Crashlytics SDK 在 iOS 中记录捕获的异常。CLS_LOG 可用于记录自定义消息,但这些日志消息将仅与下一个崩溃数据一起进入 Crashlytics。如果没有崩溃,这些日志消息将永远不会出现在 Crashlytics 仪表板中。我得到了 Crashlytics 支持团队的官方确认。在 iOS 中记录捕获的异常在他们的路线图中。
我已经浏览了不同的站点,以使 IOS 替代 Crashlytics 支持此功能。
我发现 crittercism 是迄今为止最好的..@Dima 我认为它是 Crashlytics 的替代品..试试吧。
以下是一些有助于将批判性集成到您的项目中的链接......!
http://docs.crittercism.com/ios/ios.html#logging-handled-exceptions
http://www.raywenderlich.com/34050/overview-of-ios-crash-reporting-tools-part-2
@try {
}
@catch (NSException *exc)
{
[Crittercism logHandledException:exc]
}
参考这些链接,看看它对你有用与否......!
在 catch 块中使用以下行来处理自定义捕获的异常
NSUncaughtExceptionHandler *handler = NSGetUncaughtExceptionHandler();
handler(exception);
正如 iOS 的解释http://support.crashlytics.com/knowledgebase/articles/222764-can-i-use-a-custom-exception-handler