在程序運行的那個方法里面寫一個監聽事件 NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
//崩潰日志 ?然后實現監聽的方法
voidUncaughtExceptionHandler(NSException*exception) {
NSArray*arr = [exceptioncallStackSymbols];//得到當前調用棧信息
NSString*reason = [exceptionreason];//非常重要,就是崩潰的原因
NSString*name = [exceptionname];//異常類型
NSLog(@"招用: %@ \n招用:原因: %@ \n招用:類型: %@", name, reason, arr);
}
獲取到了崩潰的日子,如何發送給開發者呢,目前一般有以下兩種方式:
1. 將崩潰信息持久化在本地,下次程序啟動時,將崩潰信息作為日志發送給開發者。
通過郵件發送給開發者。 不過此種方式需要得到用戶的許可,因為iOS不能后臺發送短信或者郵件,會彈出發送郵件的界面,只有用戶點擊了發送才可發送。 不過,此種方式最符合蘋果的以用戶至上的原則。
發送郵件代碼也很簡單:
NSString *crashLogInfo = [NSString stringWithFormat:@”exception type : %@ \n crash reason : %@ \n call stack info : %@”, name, reason, arr];
NSString *urlStr = [NSString stringWithFormat:@”mailto://tianranwuwai@yeah.net?subject=bug報告&body=感謝您的配合!
”
“錯誤詳情:%@”,
crashLogInfo];
NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];