iOS在APP中添加崩溃检测并将崩溃信息存储到本地,后期上传

不难两步直接上代码

(1)加上监听异常的代码

- (BOOL)application:(UIApplication *)application     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
     return YES;
 }

(2)程序崩溃或者发生异常时会走这个处理

void UncaughtExceptionHandler(NSException *exception) {
    NSArray *arr = [exception callStackSymbols];
    NSString *reason = [exception reason];
    NSString *name = [exception name];
//这里是异常报告
    NSString * error = [NSString stringWithFormat:@"%@%@%@++++",arr,reason,name];
    NSString * docsdir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
    NSString *dataFilePath = [docsdir stringByAppendingPathComponent:@"3EClassCrash"];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL isDir = NO;
    BOOL existed = [fileManager fileExistsAtPath:dataFilePath isDirectory:&isDir];
    if (!(isDir && existed)) {
        [fileManager createDirectoryAtPath:dataFilePath withIntermediateDirectories:YES attributes:nil error:nil];
    }
//可以根据这个路径去找到保存在本地的异常报告
    NSLog(@"%@",dataFilePath);
    NSString *path = [dataFilePath stringByAppendingPathComponent:@"3Ecrash.txt"];
    NSString * str= [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    BOOL writeSuccess;
    if (str.length > 0) {
        writeSuccess = [[NSString stringWithFormat:@"%@\n%@",str,error] writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
    }else{
        writeSuccess = [[NSString stringWithFormat:@"%@",error] writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
    }
    if (writeSuccess) {
        NSLog(@"写入成功");
    }

}

(3)上传的时候可以选择在每次重启进入APP界面的时候上传

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

推荐阅读更多精彩内容