在没有应用程序崩溃的情况下将日志发送到Crashlytics

jac*_*ack 47 ios crashlytics

如何在没有我的应用程序崩溃的情况下让Crashlytics接收日志?我有以下代码:

if(!context.managedObjectContext save:&error) {
    CLS_LOG(@"%@",error.description)
}
Run Code Online (Sandbox Code Playgroud)

发生错误时,我希望Crashlytics服务器收到错误但应用程序应继续运行.

我不需要马上记录.我很乐意在下次重启时获取日志.我只是不想在我的应用程序中触发崩溃以接收日志.

这可能吗?

Tia*_*ida 50

使用crashlytics的新更新,您现在可以使用:

[[Crashlytics sharedInstance] recordError:error];
Run Code Online (Sandbox Code Playgroud)

在斯威夫特:

Crashlytics.sharedInstance().recordError(error)
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看文档.

  • 像崩溃一样,这些记录的错误仅在下次应用程序启动时发送,如果用户从未强制退出应用程序,这是不幸的. (3认同)
  • 这应该是答案. (2认同)
  • 您在哪里可以在Fabric控制台中观看这些事件? (2认同)

Rui*_*res 13

有点老问题,但现在你可以使用Answers哪个是Fabric西装Crashlytics的一部分(也是一部分Fabric):

在此输入图像描述

面料可以在这里找到.进一步的文档和这里.

  • 这个答案已经过时了.蒂亚戈·阿尔梅达的回答是要走的路. (3认同)
  • @Lupi不是不是:https://docs.fabric.io/ios/answers/answers-events.html#custom-event.这是一个有效的解决方案. (3认同)
  • @Lupi:由于堆栈展开不是可选的,因此RecordError有成本.此外,正如其他人所说,recordError仅在下次应用启动时发送.在某些错误发生时接近实时计数的情况下,Answers可能是一个可行的首选解决方案,因为Fabric的文档概述在性能考虑因素下:https://docs.fabric.io/apple/crashlytics/logged-errors. HTML#性能的考虑 (3认同)
  • 答案与营销和大数据更相关,绝对不是错误跟踪. (2认同)

Aan*_*den 7

我尝试了下面的线条,它就像魅力一样.在try-catch块中,使用catch块中的以下行

@try {
// line of code here
}
@catch (NSException *exception) {
NSUncaughtExceptionHandler *handler = NSGetUncaughtExceptionHandler();
handler(exception);
}
Run Code Online (Sandbox Code Playgroud)

http://support.crashlytics.com/knowledgebase/articles/222764-can-i-use-a-custom-exception-handler所述

[UPDATE]

现在在fabric的crashlytics中,我们可以使用简单的函数[Crashlytics recordCustomExceptionName:reason:frameArray:]来发送处理的异常

@try {
// line of code here
}
@catch (NSException *exception) {
    NSArray *stack = [exception callStackReturnAddresses];
    [[Crashlytics sharedInstance] recordCustomExceptionName: exception.name
                                                 reason: exception.reason
                                             frameArray: stack];
}
Run Code Online (Sandbox Code Playgroud)

https://twittercommunity.com/t/crashlytics-ios-how-to-send-non-fatal-exceptions-without-app-crash/34592/32所述


小智 -4

据我所知,如果你没有正确保护你的代码,你的应用程序无论如何都会崩溃。Crashlylytics,获取此崩溃并在他们设计的 Web 应用程序中以“可读”模式向您展示它们。如果没有崩溃,crashlytics 会采取一切措施。您可以在代码中捕获异常:

@try{
....
}
@catch(NSException ex){...}
Run Code Online (Sandbox Code Playgroud)

在关键部分,但是如果您担心您的应用程序会崩溃或者您发现潜在的错误可能导致您的应用程序出现不良行为并发生故障,那么您应该始终这样做。您始终可以强制在异常中发送或跟踪此错误。

希望能帮助到你

  • 不,不会的。OP 询问如何从 Crashlytics 获取非致命错误报告,这在当时不是一个选择。您的答案是如何从一开始就防止应用程序崩溃。完全不相关。 (2认同)