前言
在app開(kāi)發(fā)過(guò)程中難免會(huì)遇到崩潰的問(wèn)題, 在線下的環(huán)境我們可以通過(guò)斷點(diǎn)找到崩潰的代碼, 從而分析出問(wèn)題的原因, 但是app上架之后用的崩潰信息又如何統(tǒng)計(jì)呢?本文將介紹兩種方式來(lái)獲取線上的崩潰日志信息万皿。
方法一:
通過(guò)集成第三方"友盟統(tǒng)計(jì)"來(lái)收集線上的崩潰日志, 關(guān)于友盟在集成在這里提供官方文檔的網(wǎng)址如下:
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 {
// 調(diào)用抓取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:@"========異常錯(cuò)誤報(bào)告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@",name,reason,[callStack componentsJoinedByString:@"\n"]];
//在這里有兩種處理方式
①調(diào)用服務(wù)器的接口把崩潰日志的信息傳到服務(wù)器
//調(diào)用服務(wù)器的接口把cotent傳給服務(wù)器即可
②把crash日志信息發(fā)送到你的郵箱
//調(diào)用發(fā)送到郵件的方法
[self sendCrashInfo: content toEmail:@"test@qq.com"];
}
//發(fā)送crash到郵件的方法:
- (void)sendCrashInfo:(NSString *)crashString toEmail:(NSString *)email {
NSMutableString *mailUrl = [NSMutableString string];
[mailUrl appendString:email];
[mailUrl appendString:@"?subject=程序異常崩潰"];
[mailUrl appendFormat:@"&body=%@", crashString];
// 打開(kāi)地址
NSString *mailPath = [mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]];
}