不難兩步直接上代碼
(1)加上監(jiān)聽異常的代碼
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
return YES;
}
(2)程序崩潰或者發(fā)生異常時會走這個處理
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界面的時候上傳