防止ios应用程序崩溃的方法技术

技术编号:30769637 阅读:14 留言:0更新日期:2021-11-10 12:36
本发明专利技术提供一种防止ios应用程序崩溃的方法,包括:在ios应用程序启动后,启动运行崩溃防护代码;在ios应用程序运行时,崩溃防护代码对ios应用程序在消息转发阶段的运行过程是否发生崩溃异常进行监听,若监听到发生崩溃异常,则崩溃防护代码对运行过程对应的崩溃代码段进行代码重写以实现对ios应用程序的修复,并将崩溃代码段上传至云端服务器;通过云端服务器对接收到的各个崩溃代码段进行可视化分析,以使ios应用程序的开发人员根据分析结果对崩溃代码段进行线下修复,并根据修复后的代码对ios应用程序进行版本更新。本发明专利技术可以避免ios应用程序的运行出现崩溃或闪退的情况发生,且这个过程用户是无感的,不会影响到用户的正常使用。的正常使用。的正常使用。

【技术实现步骤摘要】
防止ios应用程序崩溃的方法


[0001]本说明书一个或多个实施例涉及ios应用程序
,尤其涉及一种防止ios应用程序崩溃的方法。

技术介绍

[0002]当前社会环境中,随着智能手机的迅速普及,手机APP也被人们越来越多的使用。APP一旦上线发布,开发者就对其束手无策,与之而来的崩溃、闪退也防不胜防,对用户使用APP的体验产生了极大的负面影响。如何防止崩溃的发生成为了众多移动互联网公司面临的技术难题。

技术实现思路

[0003]本说明书一个或多个实施例描述了一种防止ios应用程序崩溃的方法。
[0004]本专利技术提供了一种防止ios应用程序崩溃的方法,包括:
[0005]S100、在ios应用程序启动后,启动运行崩溃防护代码;
[0006]S200、在所述ios应用程序运行时,所述崩溃防护代码采用键值观察者事件通知机制对所述ios应用程序在消息转发阶段的运行过程是否发生崩溃异常进行监听,若监听到发生崩溃异常,则所述崩溃防护代码对所述运行过程对应的崩溃代码段进行代码重写以实现对所述ios应用程序的修复,并将所述崩溃代码段上传至云端服务器;
[0007]S300、通过所述云端服务器对接收到的各个所述崩溃代码段进行可视化分析,以使所述ios应用程序的开发人员根据分析结果对所述崩溃代码段进行线下修复,并根据修复后的代码对所述ios应用程序进行版本更新。
[0008]本说明书实施例提供的防止ios应用程序崩溃的方法,在ios应用程序启动时开始启动崩溃防护代码,崩溃防护代码采用键值观察者事件通知机制对消息转发阶段进行崩溃异常进行监听,在出现崩溃异常时对崩溃代码段进行重写,并将崩溃代码段上传至云端服务器,以便工作人员进行分析并修复,从而提供更好的版本以对出现崩溃异常的版本进行更新。也就是说,当发生崩溃异常时崩溃防护代码进行崩溃防护,从而避免ios应用程序的运行出现崩溃或闪退的情况发生,而且这个过程用户是无感的,不会影响到用户的正常使用。同时由于将崩溃代码段进行上传至云端服务器进行分析统计,对ios应用程序的后续迭代优化提供了有力的数据支撑。由于只有在崩溃异常时才进行代码重写操作,对ios应用程序的运行无性能和内存等系统资源的占用。
附图说明
[0009]为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0010]图1是本专利技术一个实施例中防止ios应用程序崩溃的方法的流程示意图。
具体实施方式
[0011]下面结合附图,对本说明书提供的方案进行描述。
[0012]本专利技术提供一种防止ios应用程序崩溃的方法,如图1所示,该方法包括如下步骤S100~S300:
[0013]S100、在ios应用程序启动后,启动运行崩溃防护代码;
[0014]其中,崩溃防护代码的作用是对ios应用程序的运行进行崩溃防护。只要启动ios应用程序,就启动崩溃防护代码。
[0015]在具体实施时,可以将崩溃防护代码为采用SDK集成为一个插件,其中SDK的含义是软件开发工具包,通过软件开发工具包将崩溃防护代码集成为一个插件,这样可以将崩溃防护代码以插件的形式插入不同的ios应用程序中,实现对多种不同ios应用程序的崩溃防护。另外,可以进一步采用面向切面编程的方式植入所述ios应用程序的app代码中,即采用面向切面编程的方式将上述插件植入所述ios应用程序的app代码中。面向切面编程的方式即AOP方式,这种方式不会对系统底层的源代码做修改,而常规的植入方式需要修改底层的源代码,因此采用AOP方式对app代码的侵入极小,不会造成性能损耗。
[0016]S200、在所述ios应用程序运行时,所述崩溃防护代码采用键值观察者事件通知机制对所述ios应用程序在消息转发阶段的运行过程是否发生崩溃异常进行监听,若监听到发生崩溃异常,则所述崩溃防护代码对所述运行过程对应的崩溃代码段进行代码重写以实现对所述ios应用程序的修复,并将所述崩溃代码段上传至云端服务器;
[0017]当ios应用程序在运行时,若消息发送阶段发生错误,没有实现消息的正确发送,就会进入到消息转发阶段。而崩溃防护代码正是在消息转发阶段发挥其崩溃防护作用。
[0018]其中,键值观察者事件通知机制,即KVO(全称为Key

Value

Observer)事件通知机制。键值观察者事件通知机制是ios系统提供的一套事件通知机制,允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。例如,观察者A监听被观察者B的某个属性,当B的属性发生更改时,A就会收到通知,执行相应的方法。
[0019]其中,对崩溃代码段进行重写,实际上是用对应的一段新的代码去替代原来的崩溃代码的过程,重写过程是由崩溃防护代码执行的,通过重写的方式实现对崩溃代码的修复。
[0020]在实际中,消息转发阶段可以包括三个子阶段:方法解析子阶段(即resolveInstanceMethod对应的子阶段)、快速转发子阶段(即forwardingTargetForselector对应的子阶段)、慢速转发子阶段(即methodSignatureForSelector对应的子阶段)。在具体实施时可以针对这三个子阶段实现崩溃防护。也就是说,S200可以具体包括:
[0021]S210、所述崩溃防护代码在所述消息转发阶段的方法解析子阶段中,判断是否调用了第一对象方法或者第一类方法,所述第一对象方法为所述ios应用程序的当前运行过程所对应的对象方法,所述第一类方法为所述ios应用程序的当前运行过程所对应的类方法;
[0022]若是,则进入所述方法解析子阶段的下一个子阶段进行崩溃异常监听;
[0023]否则,所述方法解析子阶段出现崩溃异常,将当前运行过程对应的app代码段作为所述崩溃代码段,并对所述崩溃代码段进行重写处理。
[0024]可理解的是,上述过程通过键值观察者事件通知机制对方法解析子阶段进行崩溃监听,即通过键值观察者事件通知机制判断方法解析子阶段是否调用了第一对象方法或者第一类方法。而第一对象方法或第一类方法是ios应用程序当前的运行过程所执行的功能所对应的对象方法或类方法,例如,ios应用程序当前执行的是登录功能,则第一对象方法或第一类方法是能够实现登录功能的对象方法或类方法。
[0025]可理解的是,如果在方法解析子阶段调用了第一类方法或第一对象方法,说明方法解析子阶段的执行过程是成功的,可以进入下一个子阶段,从而进入下一个子阶段进行崩溃异常监听。而如果在方法解析子阶段没有调用第一对象方法或第一类方法,说明方法解析子阶段是失败的,有可能因为这一子阶段的执行失败而发生崩溃,所以此时认为方法解析子阶段出现了崩溃异常,从而对当前对应的崩溃本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种防止ios应用程序崩溃的方法,其特征在于,包括:S100、在ios应用程序启动后,启动运行崩溃防护代码;S200、在所述ios应用程序运行时,所述崩溃防护代码采用键值观察者事件通知机制对所述ios应用程序在消息转发阶段的运行过程是否发生崩溃异常进行监听,若监听到发生崩溃异常,则所述崩溃防护代码对所述运行过程对应的崩溃代码段进行代码重写以实现对所述ios应用程序的修复,并将所述崩溃代码段上传至云端服务器;S300、通过所述云端服务器对接收到的各个所述崩溃代码段进行可视化分析,以使所述ios应用程序的开发人员根据分析结果对所述崩溃代码段进行线下修复,并根据修复后的代码对所述ios应用程序进行版本更新。2.根据权利要求1所述的方法,其特征在于,所述S200具体包括:所述崩溃防护代码在所述消息转发阶段的方法解析子阶段中,判断是否调用了第一对象方法或者第一类方法,所述第一对象方法为所述ios应用程序的当前运行过程所对应的对象方法,所述第一类方法为所述ios应用程序的当前运行过程所对应的类方法;若是,则进入所述方法解析子阶段的下一个子阶段进行崩溃异常监听;否则,所述方法解析子阶段出现崩溃异常,将当前运行过程对应的app代码段作为所述崩溃代码段,并对所述崩溃代码段进行重写处理。3.根据权利要求2所述的方法,其特征在于,所述方法解析子阶段的下一个子阶段为快速转发子阶段,所述S200具体还包括:所述崩溃防护代码在所述快速转发子阶段中,判断在预设对象列表中是否能够查找到响应所述第一对象方法或所述第一类方法的子对象;若是,则进入所述快速转发子阶段的下一个子阶段进行崩溃异常监听;否则,所述快速转发子阶段出现崩溃异常,将当前运行过程对应的app代码段作为所述崩溃代码段,并对所述崩溃代码段进行重写处理。4.根据权利要求3所述的方法,其特征在于,所述快速转发子阶段的下一个子阶段为慢速转发子阶段,所述S200具体还包括:所述崩溃防护代码在所述慢速转发子阶段中,将所述预设对象列表切换为对应的关联对象列表,并判断在所述关联对象列表中是否能够查找到响应所述第一对象方法或所述第一类方法的关联子对象;若是,则所述消息转发阶段的运行过程未出现崩溃异常;否则,所述慢速转发子阶段出现崩溃异常,将当前运行过程对应的app代码段作为所述崩溃代码段,并对所述崩溃代码段进行重写处理。5.根据权利要求1所述的方法,其特征在于,所述通过所述云端服务器对接收到的各个所述崩溃代码段进行可视化分析,包括:通过所述云端服务器对同一所述崩溃代码段的接收次数进行累加,并对不同所述崩溃代码段按照累加接收次数从高至低的顺序进行排序,以使所述开发人员根据排序依次对各个所述崩溃代码段进行线下修复。6.根据权利要求1所述的方法,其特征在于,所述崩溃防护代码...

【专利技术属性】
技术研发人员:赵志华张宁
申请(专利权)人:四川虹美智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1