在开发过程中,我们有时候会留下Bug,用户在使用我们的app 的时候,有时会出现闪退,这时候我们可以让用户给我们发送邮件,以让我们开发人员更加快速的地位到Bug的所在,以最快的时间解决,同时也提高用户体验。
在AppDelegate.m文件中,添加如下代码:
01 |
NSUncaughtExceptionHandler* _uncaughtExceptionHandler = nil; |
02 |
void UncaughtExceptionHandler(NSException *exception) { |
03 |
NSLog(@"CRASH: %@", exception); |
04 |
NSLog(@"Stack Trace: %@", [exception callStackSymbols]); |
07 |
NSArray *stackArray = [exception callStackSymbols]; |
09 |
NSString *reason = [exception reason]; |
11 |
NSString *name = [exception name]; |
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>"]]; |
17 |
NSURL *url = [NSURL URLWithString:[syserror stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; |
18 |
[[UIApplication sharedApplication] openURL:url]; |
然后在 - ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions方法中添加一下代码:
2 |
_uncaughtExceptionHandler = NSGetUncaughtExceptionHandler(); |
5 |
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler); |
那么在我们的应用程序遇到闪退的时候,就会帮用户打开发送邮件功能。
- iOS开发中的一些细节BUG的解决
这篇博客里我将不定期更新自己遇到的一些细节上的BUG,并提供解决方法,遇到同样问题的童鞋们可以参考交流一下. 1.关于tableView的tableHeaderView 请注意,我这里说的是table ...
- iOS开发中打电话发短信等功能的实现
在APP开发中,可能会涉及到打电话.发短信.发邮件等功能.比如说,通常一个产品的"关于"页面,会有开发者的联系方式,理想情况下,当用户点击该电话号码时,能够自动的帮用户拨出去,就涉 ...
- iOS开发中遇到的一些问题及解决方案【转载】
iOS开发中遇到的一些问题及解决方案[转载] 2015-12-29 [385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Creat ...
- iOS开发中断言的使用—NSAssert()
原文链接:http://blog.csdn.net/univcore/article/details/16859263 断言(assertion)是指在开发期间使用的.让程序在运行时进行自检的代码(通 ...
- 总结iOS开发中的断点续传那些事儿
前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...
- iOS开发中静态库之".framework静态库"的制作及使用篇
iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...
- iOS开发中静态库制作 之.a静态库制作及使用篇
iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...
- iOS开发中获取WiFi相关信息
iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
随机推荐
- 深入浅出—JAVA(7)
7.继承与多态 遵守合约:覆盖的规则 方法的重载
- TCP/IP学习笔记
1. 2. >>> int socket(int af, int type,int protocol);//创建套接字,返回从文件描述表中取出新的索引号(int);AF_INET ...
- 转:sublime text快捷键 (很实用的东东)
一个好的编辑器,能大大提高编程的效率.如果能熟知软件的快捷键,那更能让你得心印手.这些内容都是我网上和自己实际使用过程中所收集而来的,在网络上应该也算比较全面的了吧.欢迎大家补充,我也会在以后慢慢添加 ...
- hibernate 延长加载范围 4.2
1. 关闭延迟加载功能 lazy="false"2.修改抓取策略 fetch="join"直接查询关联数据,一个联接查询搞定3.使用Hibernate对象的in ...
- [Android学习笔记5]四大应用组件之一:Service 下
绑定方式的Service使用 在实现绑定服务时,最重要的是定义onBind()回调方法返回的接口,有三种方式: 1. 继承Binder类 2. 使用Messenger 3. 使用AIDL 这里对1,2 ...
- android蓝牙(二)——接收数据
在蓝牙开发中,我们有这种一个需求:我们的androidclient要始终保持和蓝牙的连接,当蓝牙有数据返回的时候,androidclient就要及时的收取数据,当蓝牙没有数据返回的时候我们就要保持an ...
- Android经常使用UI组件 - TextView
TextView是Android里面用的最多的UI组件,一般使用在须要显示一些信息的时候,其不能输入,仅仅能初始设定或者在程序中改动. 实例:TextViewDemo 执行效果: 代码清单: 布局文件 ...
- 【Eclipse】Failed to load JavaHL Library
1.选择window--->preferences->Team->SVN->SVN接口 2.选择SVNKit (Pure Java) xxxxxx 如下图所示 : 选择之后, ...
- 【Oracle】wmsys.wm_concat函数字段值为空
这个是因为字符集的问题,和空值是没关系的.其实已经取到了数据,可以验证一下返回的不是0,但是由于这个里面有个chr(0)字符,而且可能第一个字符就是chr(0),所以就显示得怪异的空现象.至于为何会出 ...
- c++特殊函数
C++中NULL不能写作小写,NULL的值为零,也可以写作0 在自己写的复制构造函数中不改变原对象,所以传进来的参数可以设为const类型的,这样可以保证传进来的对象不被改变 比如A(const A ...