在项目上架到App Store以后,谁也不能保证没有一个错误,可能在测试期间连测试人员都没有发现的隐藏小bug在上线之后被用户发现了,这就无疑给用户造成了困扰。所以作为开发人员,要及时的收集这些crash日志信息,然后修复这些问题。
这里我用了一种方法,就是当应用在用户使用时发生崩溃现象,会获取到崩溃的日志,然后调起邮箱让用户通过邮件发送给我们。
具体代码如下:
#pragma mark - 获取异常日志
- (void)installUncaughtExceptionHandler {
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
}
void UncaughtExceptionHandler(NSException *exception) {
NSArray *arr = [exception callStackSymbols];
NSString *reason = [exception reason];
NSString *name = [exception name];
NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSString *urlStr = [NSString stringWithFormat:@"mailto://developer@qq.com?subject=Crash报告&body=您的建议会让我们做的更好,感谢您的配合!<br><br><br>""错误详情(%@):<br>%@<br>-----------------------<br>%@<br>---------------------<br>%@",currentVersion,name,reason,[arr componentsJoinedByString:@"<br>"]];
NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication]openURL:url];
}
然后在AppDelegate
里的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//获取异常报告
[self installUncaughtExceptionHandler];
}
方法中调用就可以了。