iOS 增加崩溃监测友好提示,维护好每个客户。

经历————>感悟:

前几天在地铁玩手机,无意间打开了好久没玩的新浪微博,进入首页向上刷新数据,一下就崩溃了。正当我差异大新浪的用户体验的时候,第三遍打开弹出了一个很友好的崩溃提示,如下图:

之后,我想这个就是我们需要借鉴的地方,虽然说这应该是产品考虑的问题。做开发的都知道,应用避免不了在某些特殊情况会出现崩溃,然而客户就是上帝,为了维护好客户,要给客户最友好的提示,即使应用崩了,也要告诉用户,给他们几个选择的余地。


于是,我就在代码里面增加了崩溃监测,代码如下:

在appdelegate.m中添加

   NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);//监测崩溃!!!

   voidUncaughtExceptionHandler(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"];

    }

    

}

然后如果万一出现崩溃,就记录下来
[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"exception"];
每次程序一启动再去判断有没有这个崩溃,

[[NSUserDefaultsstandardUserDefaults]boolForKey:@"exception"]//判断是否奔溃!!!

有的话再做版本升级、清除缓存、(让后台处理之后)重新进入 等处理。。。这些在这里就不详说了
最后,别忘了清除本次的监测结果

[[NSUserDefaultsstandardUserDefaults]removeObjectForKey:@"exception"];//取完要删除掉

[[NSUserDefaultsstandardUserDefaults]synchronize];







版权声明:本文为Vanpoe原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。