iOS Crash - 收集篇

1,986 阅读2分钟

1.苹果Crash收集服务

通过iTunes Connect(Manage Your Applications - View Details - Crash Reports)获取用户的crash日志。在XCode 中Window->Organizer->Crashes也可以看到同样的crash日志,请看这篇文章:如何查看iOS已上架app崩溃分布、定位crash发生的行
但是 收集crash功能需要用户设置->隐私->诊断与用量->诊断与用量数据(iOS8一下在通用中设置) 选择自动发送,并与开发者共享即可;所以不推荐用

2.自己实现应用内崩溃收集,并上传服务器

在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler)。UncaughtExceptionHandler是一个函数指针,该函数需要我们实现,可以取自己想要的名字。当程序发生异常崩溃时,该函数会得到调用,这跟C,C++中的回调函数的概念是一样的。

NSSetUncaughtExceptionHandler

获取到了崩溃日志,如何发送给开发者呢,目前一般有以下两种方式:
将崩溃信息持久化在本地,下次程序启动时,将崩溃信息作为日志发送给开发者。通过邮件发送给开发者。 不过此种方式需要得到用户的许可,因为iOS不能后台发送短信或者邮件,会弹出发送邮件的界面,只有用户点击了发送才可发送。

3.第三方收集crash

使用友盟、bugHD、Flurry 等第三方崩溃统计工具,原理都是根据系统产生的crash日志进行了一次提取或封装,然后将封装后的crash文件上传到对应的服务端进行解析处理。
优点是快速集成crash收集功能,有完善的后台管理界面和解析处理(crash文件是要解析后才能看懂的),好用还不要钱

最后 恶意覆盖问题

崩溃收集统计函数应该只进行一次调用,如果用第三方的话也最好只用一个第三方,这样我们获取崩溃统计信息的途径也是唯一的。