您的位置:首页 > 移动开发 > IOS开发

iOS 捕获Crash 发送Bug邮件

2013-08-20 23:17 477 查看
 在开发过程中,我们有时候会留下Bug,用户在使用我们的app 的时候,有时会出现闪退,这时候我们可以让用户给我们发送邮件,以让我们开发人员更加快速的地位到Bug的所在,以最快的时间解决,同时也提高用户体验。

       在AppDelegate.m文件中,添加如下代码:

01
NSUncaughtExceptionHandler*
_uncaughtExceptionHandler = nil;
02
void
 
UncaughtExceptionHandler(NSException
*exception) {
03
    
NSLog(@
"CRASH:
%@"
,
exception);
04
    
NSLog(@
"Stack
Trace: %@"
,
[exception callStackSymbols]);
05
    
 
06
    
//
异常的堆栈信息
07
    
NSArray
*stackArray = [exception callStackSymbols];
08
    
//
出现异常的原因
09
    
NSString
*reason = [exception reason];
10
    
//
异常名称
11
    
NSString
*name = [exception name];
12
    
 
13
    
NSString
*syserror = [NSString stringWithFormat:@
"mailto://787887347@qq.com?subject=bug报告&body=感谢您的配合!<br><br><br>"
14
                          
"Error
Detail:<br>%@<br>--------------------------<br>%@<br>---------------------<br>%@"
,
15
                          
name,reason,[stackArray
componentsJoinedByString:@
"<br>"
]];
16
    
 
17
    
NSURL
*url = [NSURL URLWithString:[syserror stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
18
    
[[UIApplication
sharedApplication] openURL:url];
19
    
return
;
20
}
   然后在 - ( BOOL )application:( UIApplication *)application
didFinishLaunchingWithOptions:( NSDictionary *)launchOptions方法中添加一下代码:

1
//
保存系统处理异常的Handler
2
    
_uncaughtExceptionHandler
= NSGetUncaughtExceptionHandler();
3
    
 
4
    
//
设置处理异常的Handler
5
    
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
    那么在我们的应用程序遇到闪退的时候,就会帮用户打开发送邮件功能。

 

原文来自开源中国
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息