第一种方法:
第1步:检查是否支持报告
转至“ 支持的崩溃报告”,“ 支持的能源报告 ”或“ 支持的度量标准报告”,以检查目标类型,平台和Xcode版本是否支持报告。
第2步:使用TestFlight或通过App Store分发您的应用
要获取崩溃和能源报告,请使用TestFlight 分发应用程序或通过App Store分发应用程序。要获取指标报告,请通过App Store分发应用程序。
(可选)在将应用程序上载到App Store Connect时,包括符号(选择“上传应用程序的符号...” 分发选项)。保留您上传到App Store Connect的存档。如果不包含符号,则此存档包含表示崩溃和能量日志所需的符号信息。
第3步:在设备上,与开发人员共享崩溃数据和统计信息
TestFlight用户自动同意共享数据,但从App Store下载应用程序的用户需要同意与开发人员共享崩溃和使用数据。
第4步:在Xcode中,输入您的团队Apple ID
要下载报告,请添加Apple ID帐户。
在发布Apple应用程序后几天,以便收集日志并将其组织到报告中。为了提供准确的结果,Metrics组织者报告需要大量使用您的应用,并且每个指标都有不同的使用阈值。
详情请看官方文档https://help.apple.com/xcode/mac/current/#/dev861f46ea8
第二种方法:
在默认情况下,系统发生了未知异常,系统会捕获该异常并且退出app。发生异常后,系统会创建一个NSExcetion对象,并且在异常处抛出,等待有接受者,若没有传递给系统处理。那么如何来获取这个未知异常呢?该问题问的好!利用如下函数来解决这个问题:
FOUNDATION_EXPORT void NSSetUncaughtExceptionHandler(NSUncaughtExceptionHandler * _Nullable);
该函数是一个全局的函数,该函数一般在app开始的时候调用,该函数的意义:设置未知异常的捕获函数,参数是未知异常处理函数的函数名,该未知异常处理函数的模式如下:
typedef void NSUncaughtExceptionHandler(NSException *exception);
未知异常处理函数的示例代码:
void uncaughtExceptionHandler(NSException *exception) {
// 在app退出前的一些处理任务,系统会等待该函数的执行完毕
// NSLog(@“CRASH: %@“, exception);
// NSLog(@“Stack Trace: %@“, [exception callStackSymbols]);
// Internal error reporting
}
调用方式:
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); // 该函数可在任务未知调用。
完成上述的异常处理函数的定义和调用后,若再发生系统的未知异常的情况下,系统首先将异常传递个该函数,执行完该函数后app退出。因此,我们可以在这个函数内做一些业务处理,例如记录或者传递异常等