经历————>感悟:
前几天在地铁玩手机,无意间打开了好久没玩的新浪微博,进入首页向上刷新数据,一下就崩溃了。正当我差异大新浪的用户体验的时候,第三遍打开弹出了一个很友好的崩溃提示,如下图:
之后,我想这个就是我们需要借鉴的地方,虽然说这应该是产品考虑的问题。做开发的都知道,应用避免不了在某些特殊情况会出现崩溃,然而客户就是上帝,为了维护好客户,要给客户最友好的提示,即使应用崩了,也要告诉用户,给他们几个选择的余地。
于是,我就在代码里面增加了崩溃监测,代码如下:
在appdelegate.m中添加
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);//监测崩溃!!!
void UncaughtExceptionHandler(NSException *exception) {
NSArray *arr = [exceptioncallStackSymbols];//得到当前调用栈信息
NSString *reason = [exceptionreason];//非常重要,就是崩溃的原因
NSString *name = [exceptionname];//异常类型
NSLog(@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr);
if (arr.count!=0 && reason.length!=0 && name.length != 0) {
[[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"exception"];
}
}
[[NSUserDefaultsstandardUserDefaults]boolForKey:@"exception"]//判断是否奔溃!!!
有的话再做版本升级、清除缓存、(让后台处理之后)重新进入 等处理。。。这些在这里就不详说了[[NSUserDefaultsstandardUserDefaults]removeObjectForKey:@"exception"];//取完要删除掉
[[NSUserDefaultsstandardUserDefaults] synchronize];