[发明专利]IOS平台上捕获系统消息的方法和装置有效
申请号: | 201210366014.6 | 申请日: | 2012-09-27 |
公开(公告)号: | CN102902541A | 公开(公告)日: | 2013-01-30 |
发明(设计)人: | 王海 | 申请(专利权)人: | 北京国双科技有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 吴贵明;张永明 |
地址: | 100086 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | ios 平台 捕获 系统 消息 方法 装置 | ||
技术领域
本发明涉及通信领域,具体而言,涉及一种IOS平台上捕获系统消息的方法和装置。
背景技术
随着通信技术的发展,IOS系统越来越被人熟知,在IOS系统中,系统消息可以简单理解为方法调用,指的是由IOS操作系统或app(application,第三方应用程序)发起的对操作系统公开的api(Application Programming Interface,应用程序编程接口)方法调用。例如:当对象被创建时,iOS操作系统会调用NSObject的init方法,就称这次调用为一次系统消息。在IOS系统中,捕获消息对于app行为监测很重要,要准确检测app的行为,需要对于一些关键系统消息进行捕获,并记录下来。
现有的技术中,捕获系统消息的一般方法是继承目标方法所在的类,重写目标方法,在目标方法中记录下方法调用信息或插入自定义代码,然后在调用父类的方法实现。这样既保留了父类方法的逻辑,又加入了自定义逻辑。例如要监测某对象“创建”的消息,就需要继承此对象,然后重写“创建”方法,记录下创建消息。这种方法工作量大,容易遗漏,例如,要捕获所有视图对象的创建消息,并记录下视图是何时被创建的,就需要在每一个视图实现类中重新创建方法,而一个app中往往存在很多视图类,这就需要加入大量重复的逻辑,工作量大还容易出错。
另一种方法是让这些视图类都继承自同一个父类,在父类中加入重新创建方法,由于IOS的编程语言ObjectiveC是单继承的,如果仅仅是为了记录视图创建时间就占用了继承的位置,很不值得,其他更重要的功能往往也需要继承,就发生了冲突。
针对相关技术中IOS平台捕获系统消息时因加入大量代码而导致的工作量大、容易出错的问题,目前尚未提出有效的解决方案。
发明内容
本发明提供了一种IOS平台上捕获系统消息的方法和装置,以解决相关技术中IOS平台捕获系统消息时因加入大量代码而导致的工作量大、容易出错的问题,目前尚未提出有效的解决方案。
根据本发明的一个方面,提供了一种IOS平台上捕获系统消息的方法,该方法包括:获取当前所需执行的api的指针指向的方法体,其中,指针指向的方法体包括如下逻辑:调用api自身和记录当前所需执行的api的发生状态;执行获取到的当前所需执行的api的指针指向的方法体。
进一步地,在获取当前所需执行的api的指针指向的方法体之前,方法包括:为api所在的类创建分类;在创建的分类中创建自定义方法,其中,自定义方法包含如下逻辑:递归调用自身和记录系统消息发生状态;将自定义方法的方法体和api中的方法体进行交换。
进一步地,在为api所在的类创建分类之前,方法还包括:确定api的名称和该api所在的类。
进一步地,确定api的名称和该api所在的类的步骤包括:在IOS系统的api文档中查找到api所对应的信息;根据查找到的api所对应的信息确定api的名称和该api所在的类。
进一步地,将自定义方法的方法体和api的方法体进行交换包括:确定用于指向自定义方法的方法体的第一指针;确定用于指向api的方法体的第二指针;将确定的第一指针和确定的第二指针交换。
根据本发明的另一方面,提供了一种IOS平台上捕获系统消息的,该装置包括:获取单元,用于获取当前所需执行的api的指针指向的方法体,其中,指针指向的方法体包括如下逻辑:调用api自身和记录当前所需执行的api的发生状态;执行单元,用于执行获取单元获取到的当前所需执行的api的指针指向的方法体。
进一步地,该装置还包括:第一创建单元,用于在获取当前所需执行的api的指针指向的方法体之前,为api所在的类创建分类;第二创建单元,用于在获取当前所需执行的api的指针指向的方法体之前,在第一创建单元创建的分类中创建自定义方法,其中,自定义方法包含如下逻辑:递归调用自身和记录系统消息发生状态;交换单元,用于在获取当前所需执行的api的指针指向的方法体之前,将自定义方法的方法体和api中的方法体进行交换,其中,业务逻辑为api所对应的业务逻辑。
进一步地,该装置还包括:确定单元,用于在为api所在的类创建分类之前,确定所需监控的api的名称和api所在的类。
进一步地,确定单元包括:查找模块,用于在IOS系统的api文档中查找到api所对应的信息;第一确定模块,用于根据查找模块查找到的api所对应的信息确定api的名称和该api所在的类。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京国双科技有限公司,未经北京国双科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210366014.6/2.html,转载请声明来源钻瓜专利网。