本发明涉及ios闪退保护技术领域,具体说是一种ios闪退保护策略。
背景技术:
iosapp有时可能遇到启动必crash(程序崩溃)的绝境:每次打开app都闪退,无法正常使用app。appcrash原因很多,大致可归类如下:
1.内存管理错误:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致appcrash。或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。亦或非授权的内存位置的使用也可能会导致appcrash。
2.程序逻辑错误:数组越界、堆栈溢出、并发操作、逻辑错误。例如:app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。
3.设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。
4.网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致appcrash。或者是不同网络的切换也可能会影响app的稳定性。
所以如果出现了崩溃现象,首先一定要给用户好的体验感,可以提示用户程序出现问题然后重启应用,当然开发者也应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大。
如何在程序崩溃的情况下如何重启应用收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序,需要仔细研究、设计恰当的异常捕获机制。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种ios闪退保护策略,通过异常监听,及时捕获app异常,能获取尽可能详细的异常信息,在发现连续闪退时,通过使用热补丁的方式修复,尽可能保证app的正常运行,避免数据损坏等情况的出现,提高用户使用体验。
为达到以上目的,本发明采取的技术方案是:
一种ios闪退保护策略,其特征在于,包括如下步骤:
注册异常监听信号,用于持续捕获app异常,
所述异常监听信号为全局的异常捕获器,
当捕获到app异常时,获取异常堆栈信息,
解析异常堆栈信息,将解析出的主要信息写入本地资源文件中,
所述主要信息至少包括:调用时机,堆栈信息,产生crash的次数,
继续监听捕获app异常。
在上述技术方案的基础上,捕获app异常采用以下方法中的至少一种:
利用machapi捕获mach异常,
通过posixapi注册signal来捕获unix异常信号,
注册nsuncaughtexceptionhandler来捕获应用级异常。
在上述技术方案的基础上,异常监听信号检测到连续闪退情况时,启动对app的保护处理。
在上述技术方案的基础上,连续闪退情况是指闪退连续出现至少3次,
不足3次时,则异常监听信号尝试直接重启并运行app。
在上述技术方案的基础上,在预设时间内重复出现的闪退计为连续闪退,
超出预设时间出现的闪退不计为连续闪退,
预设时间默认值为5秒,
具体计数通过计数器实现。
在上述技术方案的基础上,所述对app的保护处理具体步骤如下:
提示用户允许尝试修复app,
获得允许后,按预设信息查找热补丁,
获取热补丁,并尝试使用热补丁的方式修复,
热补丁执行替换代码操作,
重置闪退计数,
生成统计数据并发送远端服务器。
本发明所述的ios闪退保护策略,通过异常监听,及时捕获app异常,能获取尽可能详细的异常信息,在发现连续闪退时,通过使用热补丁的方式修复,尽可能保证app的正常运行,避免数据损坏等情况的出现,提高用户使用体验。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的ios闪退保护策略,包括如下步骤:
注册异常监听信号,用于持续捕获app异常,
所述异常监听信号为全局的异常捕获器,
当捕获到app异常时,获取异常堆栈信息,
解析异常堆栈信息,将解析出的主要信息写入本地资源文件中,
所述主要信息至少包括:调用时机,堆栈信息,产生crash的次数,
继续监听捕获app异常。
在上述技术方案的基础上,捕获app异常采用以下方法中的至少一种:
利用machapi捕获mach异常,
通过posixapi注册signal(sigsegv,signalhandler)来捕获unix异常信号,
注册nsuncaughtexceptionhandler来捕获应用级异常。
在上述技术方案的基础上,异常监听信号检测到连续闪退情况时,启动对app的保护处理。
在上述技术方案的基础上,连续闪退情况是指闪退连续出现至少3次,
不足3次时,则异常监听信号尝试直接重启并运行app。
在上述技术方案的基础上,在预设时间内重复出现的闪退计为连续闪退,
超出预设时间出现的闪退不计为连续闪退,
预设时间默认值为5秒,
具体计数通过计数器实现。
在上述技术方案的基础上,所述对app的保护处理具体步骤如下:
提示用户允许尝试修复app,
获得允许后,按预设信息查找热补丁,
获取热补丁,并尝试使用热补丁的方式修复,
热补丁执行替换代码操作,
重置闪退计数,
生成统计数据并发送远端服务器。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。