iOS崩溃时收集崩溃信息

背景

1.在App上线时我们没有办法log手机的奔溃日志,现在网上有很多第三方收集奔溃日志的方法,常用的例如Crashlytics
2.但我们也需要知道如何使用系统框架收集crash日志

一、在App崩溃时收集崩溃信息

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch.
    // 1.添加Crash崩溃函数监听
    NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);
    return YES;
}

// 当程序Crash时掉用此函数 
void UncaughtExceptionHandler(NSException *exception) {
    // 1.异常类型
    NSString *name = [exception name];
    // 2.非常重要,就是崩溃的原因
    NSString *reason = [exception reason];
    // 3.得到当前调用栈信息
    NSArray *logArray = [exception callStackSymbols];
    // 4.崩溃日志
    NSString *crashLogInfo = [NSString stringWithFormat:@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, logArray];
    // 5.可以缓存写入到本地,下次程序开启时发送的远端服务器
    // 再次我设置崩溃信息发送至邮箱
    NSString *urlStr = [NSString stringWithFormat:@"mailto://siming_zhu@163.com?subject=bug报告&body=感谢您的配合!,错误详情:%@", crashLogInfo];
    NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    [[UIApplication sharedApplication] openURL:url];
}

更多分享:

Github:https://github.com/zhusiming/
GitBook:https://zhusiming.gitbooks.io/smbook/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容