前言
在app开发过程中难免会遇到崩溃的问题, 在线下的环境我们可以通过断点找到崩溃的代码, 从而分析出问题的原因, 但是app上架之后用的崩溃信息又如何统计呢?本文将介绍两种方式来获取线上的崩溃日志信息。
方法一:
通过集成第三方"友盟统计"来收集线上的崩溃日志, 关于友盟在集成在这里提供官方文档的网址如下:
http://dev.umeng.com/analytics/ios-doc/integration?spm=0.0.0.0.0bo0PX#5
方法二:
iOS官方sdk提供了抓取crash日志的方法:
1、在 AppDelegate.m 中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 调用抓取crash日志的方法
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
return YES;
}
//抓取crash日志的方法:
void UncaughtExceptionHandler(NSException *exception) {
/**
* 获取异常崩溃信息
*/
NSArray *callStack = [exception callStackSymbols];
NSString *reason = [exception reason];
NSString *name = [exception name];
NSString *content = [NSString stringWithFormat:@"========异常错误报告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@",name,reason,[callStack componentsJoinedByString:@"\n"]];
//在这里有两种处理方式
①调用服务器的接口把崩溃日志的信息传到服务器
//调用服务器的接口把cotent传给服务器即可
②把crash日志信息发送到你的邮箱
//调用发送到邮件的方法
[self sendCrashInfo: content toEmail:@"test@qq.com"];
}
//发送crash到邮件的方法:
- (void)sendCrashInfo:(NSString *)crashString toEmail:(NSString *)email {
NSMutableString *mailUrl = [NSMutableString string];
[mailUrl appendString:email];
[mailUrl appendString:@"?subject=程序异常崩溃"];
[mailUrl appendFormat:@"&body=%@", crashString];
// 打开地址
NSString *mailPath = [mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]];
}