iOS 捕获闪退崩溃记录,并进行下次启动APP闪退反馈

216 阅读1分钟

在AppDelegate.m中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //发生异常崩溃时程序会自动调用此方法
    NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
    
    return YES;

}

void UncaughtExceptionHandler(NSException *exception) {

    //获取当前调用栈信息
    NSArray * array = [exception callStackSymbols];

    //获取崩溃原因
    NSString * reason = [exception reason];

    //捕获异常类型
    NSString * name = [exception name];

    //本地保存异常状态
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setBool:YES forKey:@"CrashStatus"];
    [userDefaults synchronize];
}

在首页控制器中


- (void)examineCrash {
    
    //获取上次是否崩溃状态
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
    BOOL crashStatus = [userDefaults boolForKey:@"CrashStatus"];

    //若崩溃状态为YES,
    if (crashStatus == YES) {
        //此处执行后续UI代码
        ......
        ......
        ......
        
  
        //修改闪退状态,下次启动不再弹出
        NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setBool:NO forKey:@"CrashStatus"];
        [userDefaults synchronize];

    }
}