一种网络性能参数采集方法、终端装置及存储介质与流程

文档序号:15930119发布日期:2018-11-14 01:32阅读:153来源:国知局

本发明涉及计算机技术领域,尤其涉及一种网络性能参数采集方法、终端装置及存储介质。

背景技术

在apm(应用性能管理)平台中,对应用关键业务的监测管理,能够保证为用户提供更好的服务。应用的网络性能作为重要的一环,监测采集应用的网络性能参数,可以为改进网络耗时、请求错误等提供重要依据。

目前,业内针对网络性能监控常采用的手段有nsurlprotocol和fishhookcfnetwork两种。前者为ios中拦截所有网络请求的方法,由于采用nsurlprotocol方法,需要重载urlloadingsystem,致使响应速度慢,性能较差,且每次请求需要重新创建nsurlsession,反复重建有可能导致系统崩溃;后者交换cfnetwork方法,会交换掉私有api,应用app的上架功能,同时这种方法的内存消耗较大,影响应用的使用。

故,有必要提出一种高效简单,且不影响应用的原有功能的性能参数采集方法。



技术实现要素:

有鉴于此,本发明实施例提供了一种网络性能参数采集方法、终端装置及存储介质,以解决现有采集方法性能差、影响原有功能的问题。

本发明实施例的第一方面,提供了一种网络性能参数采集方法,包括:

定义nsurlsession的分类,在所述分类中设定网络请求的交换方法;

当终端启动预定应用时,通过所述分类获取nsurlsession中的代理对象,并动态交换所述代理对象中的回调方法;

当检测到所述预定应用的网络请求,通过交换后的回调方法将所述网络请求存储到预定义的字典中。

本发明实施例的第二方面,提供了一种网络性能参数终端装置,包括:

定义模块:用于定义nsurlsession的分类,在所述分类中设定网络请求的交换方法;

交换模块:用于当终端启动预定应用时,通过所述分类获取nsurlsession中的代理对象,并动态交换所述代理对象中的回调方法;

存储模块:用于当检测到所述预定应用的网络请求,通过交换后的回调方法将所述网络请求存储到预定义的字典中。

本发明实施例的第三方面,提供了一种终端装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例第一方面所述方法的步骤。

本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例第一方面提供的所述方法的步骤。

本发明实施例的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被一个或多个处理器执行时实现本发明实施例第一方面提供的所述方法的步骤。

本发明实施例中,通过定义nsurlsession的分类,分类中定义交换方法,在启用app时实现所述交换方法,替换回调函数,进而在网络请求时通过替换后的回调函数获取请求参数。使得在不影响ios中程序正常功能下,高效快速的采集到网络性能参数,进而根据性能参数为用户提供更好的服务,保障用户体验。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的网络性能参数采集方法的一个实施例流程图;

图2为本发明实施例提供的网络性能参数采集方法的另一个实施例流程图;

图3为本发明实施例提供的网络性能参数采集终端装置的结构示意图;

图4为本发明实施例提供的终端装置的结构示意图。

具体实施方式

本发明实施例提供了一种网络性能参数采集方法、终端装置及存储介质,用于快速准确的推送热点直播。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

实施例一:

请参阅图1,本发明实施例提供的网络性能参数采集方法的流程示意图,包括以下步骤:

s101、定义nsurlsession的分类,在所述分类中设定网络请求的交换方法;

所述nsurlsession是一组用于处理基于http/https请求的类,可以管理网络请求,并对请求任务统一配置。所述分类用于在原有类基础上添加新的方法,并扩展属性,具体表示一个指向分类的结构体指针。在本发明实施例中定义系统类nsurlsession的分类,能够扩展nsurlsession的功能,进而实现自定义的交换方法。

所述交换方法具体为一个自定义的工具类,该工具类中定义有hookmethod,用于替换原始类,原始类方法,以及替换后的类,替换后的类方法。上述替换主要通过runtime函数实现。

s102、当终端启动预定应用时,通过所述分类获取nsurlsession中的代理对象,并动态交换所述代理对象中的回调方法;

所述启动预定应用指的是终端点击打开app或某段程序,即该app或某段程序处于运行状态时,才会启动替换操作。所述代理对象为实例化的网络请求,及new出来的nsurlsession的对象,所述对象可以处理网络交互任务和信息内容。所述回调方法为系统默认执行的回调函数,具体可包括创建nsurlsession的方法、收集网络性能参数后的调用以及网络请求完成后的调用。

当替换成功交换方法会返回一个布尔类型的值,若没有完成替换,会为预先设定对应的回调函数,注入到代理对象,避免因为替换不成功,影响应用程序的网络请求。

可选的,定义一个工具类,在所述工具类中分别定义所述nsurlsession创建方法的替换、所述代理对象回调方法的替换。所述工具类主要用于实现代理对象的替换及回调方法的替换,替换后的代理对象可以获取到原有回调方法,再交换掉回调方法,交换后的回调方法能够传出网络请求信息。在本发明实施例中,直接在所述工具类中,定义代理对象替换的类方法和回调方法替换的类方法,这两个类方法均在runtime函数中执行,这样就保证可以进行动态交换,且不影响原有代码的基础上,获取网络请求。

可选的,自定义一个类,并单例实现所述类,设定所述类内部实现所述分类的交换方法。单例模式下实现能够保障一个类仅有唯一的实例,提供唯一的访问点,减少内存的开销。在本发明实施例中,自定义的类可用于设定交换的启动,并内部实现分类的扩展功能,进行动态交换。

优选的,还包括在所述类内部创建异步串行队列,将所述类中所有的方法放入所述异步串行队列中。创建异步串行队列可以避免多线程并发带来的阻塞问题,减少同步操作的影响。

s103、当检测到所述预定应用的网络请求,通过交换后的回调方法将所述网络请求存储到预定义的字典中。

每当应用程序发起网络请求,请求参数会被替换后的回调方法捕获到,拦截的信息会传出以特定形式存储起来,所述所述信息即网络请求,请求参数中包含有网络性能参数。在本发明实施例中,通过到代理对象,替换代理对象的回调方法,使得替换后的回调函数可以获取到网络请求参数的内容,替换后的回调函数执行完,会执行系统设定的默认回调函数。所述替换后的回调函数可收集接收网络性能参数并传出。

所述字典为一种键值存储结构,具体的,设定所述网络请求任务为键,网络性能参数为值存储所述字典中。优选的,创建字典时,实现所述字典的懒加载。

可选的,还包括获取所述网络请求任务中错误的请求,从所述字典中移除错误的网络请求任务及对应的网络请求参数,并将所述字典中数据转换后上传至服务器。

上述步骤,通过获取代理对象,替换回调方法,从而拦截网络请求参数,采集到参数后,执行系统默认函数,不仅可以避免对网络正常请求的干扰,不侵入原有代码,同时简单高效,保证了对参数信息的便捷处理。

实施例二:

在图1的基础上,以程序编码为例,结合图2详述网络性能参数采集的具体实现过程,如下:

发起网络请求过程中会创建nsurlsession,使用nsurlsession可以生成请求任务,并通过代理的方式回调。一般会通过‘sessionwithconfiguration:delegate:’方法创建nsurlsession。

在s201中定义一个工具类dynetworkswizzleutil,在该工具类中定义交换的函数hookmethod,通过runtime实现类方法的交换。定义函数hookdelegatemethod,通过runtime实现回调函数的替换。

在s202中创建系统类nsurlsession的分类,定义swizzlenetwork作为交换网络请求的的方法,调用dynetworkswizzleutil的类方法将‘sessionwithconfiguration:delegate:’替换为‘dysessionwithconfiguration:delegate:’,在‘dysessionwithconfiguration:delegate:’中再通过dynetworkswizzleutil替换回调方法中‘urlsession:task:didfinishcollectingmetrics:’和‘urlsession:task:didcomletewitherror:’。以上,完成了网络请求中的代理对象,及其回调方法的替换。

s202中是在nsurlsession基础上扩展的替换功能,通过s203就可以启动替换程序了。具体先定义一个dynetworkmonitor类,实现其单例加载。在该类中定义类方法startmonitor,并其内部调用对nsurlsession扩展的swizzlenetwork方法,同时在在该类中定义一个字典performancedic,用于将采集的网络请求参数保存起来。

s204中,交换后的回调方法分别调用dynetworkmonitor中的setmetrics:fortask:方法和seterror:withtask:方法传送采集的网络请求参数。

通过s204实现s205中将采集的参数保存到字典performancedic。具体以网络请求任务为键,请求参数(性能参数)为值。这样根据请求任务,就可以拿到每次请求的参数信息。可选的,还包括定义一个方法seterror:withtask:方法入参为请求错误及网络请求任务,实现为从performancedic中取出以网络请求任务为键的性能参数并移除。

优选的,还包括对所述性能参数转换上传到服务器。

优选的,在定义的dynetworkmonitor中创建一个异步串行队列,将该类中的所有方法放进所述队列中,避免多线程并发时,操作performancedic导致数据竞争。

在本发明实施例中,通过替换代理对象其中的回调函数,截取数据后,回调原有的方法执行,减少对系统及应用程序的影响。

实施例三:

上面主要描述了一种网络性能参数采集方法,下面将对一种网络性能采集的终端装置进行详细描述。

图3示出了网络性能参数采集终端装置的结构示意图,包括:

定义模块310:用于定义nsurlsession的分类,在所述分类中设定网络请求的交换方法;

分类用于在原有类基础上添加新的方法,并扩展属性,具体表示一个指向分类的结构体指针。在本发明实施例中定义系统类nsurlsession的分类,能够扩展nsurlsession的功能,进而实现自定义的交换方法。

交换模块320:用于当终端启动预定应用时,通过所述分类获取nsurlsession中的代理对象,并动态交换所述代理对象中的回调方法;

所述代理对象为实例化的网络请求,及new出来的nsurlsession的对象,所述对象可以处理网络交互任务和信息内容。所述回调方法为系统默认执行的回调函数,具体可包括创建nsurlsession的方法、收集网络性能参数后的调用以及网络请求完成后的调用

可选的,所述交换模块320还包括:

定义单元:用于定义一个工具类,在所述工具类中分别定义所述nsurlsession创建方法的替换、所述代理对象回调方法的替换。

所述工具类主要用于实现代理对象的替换及回调方法的替换,替换后的代理对象可以获取到原有回调方法,再交换掉回调方法,交换后的回调方法能够传出网络请求信息。在本发明实施例中,直接在所述工具类中,定义代理对象替换的类方法和回调方法替换的类方法,这两个类方法均在runtime函数中执行,这样就保证可以进行动态交换,且不影响原有代码的基础上,获取网络请求。

可选的,实现交换模块320的功能还包括:自定义一个类,并单例模式下实现所述类,设定所述类内部实现所述分类的交换方法。

通过上述自定义的类,设定启动应用时,调用工具类中的交换方法,动态替换回调函数,这样被替换后,就可以采集拦截网络请求,同时,执行完替换后的回调方法,会去继续执行原请求中的其他函数,避免对正常的网络请求的干扰。

优选的,在所述类内部创建异步串行队列,将所述类中所有的方法放入所述异步串行队列中。

存储模块330:用于当检测到所述预定应用的网络请求,通过交换后的回调方法将所述网络请求存储到预定义的字典中。

通过到代理对象,替换代理对象的回调方法,使得替换后的回调函数可以获取到网络请求参数的内容,替换后的回调函数执行完,会执行系统设定的默认回调函数。所述替换后的回调函数可收集接收网络性能参数并传出。

可选的,所述存储模块330包括:

设定单元:用于设定所述网络请求任务为键,网络性能参数为值存储所述字典中。

可选的,所述存储模块330还包括:

移除单元:用于获取所述网络请求任务中错误的请求,从所述字典中移除错误的网络请求任务及对应的网络请求参数,并将所述字典中数据转换后上传至服务器。

实施例四:

图4是本发明一实施例提供的网络性能参数采集终端装置结构的示意图。所述终端设备,为具备触摸屏的移动计算机设备,包括但不限于智能手机、智能手表、笔记本、平板电脑、pos机甚至包括车载电脑。如图4所示,该实施例的服务器4包括:存储器410、处理器420以及系统总线430,所述存储器410包括存储其上的可运行的程序4101,本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图4对终端设备的各个构成部件进行具体的介绍:

存储器410可用于存储软件程序以及模块,处理器420通过运行存储在存储器410的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。存储器410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

在存储器410上包含网络性能参数采集方法的可运行程序4101,所述可运行程序4101可以被分割成一个或多个模块/单元,所述一个或多个模块/单元被存储在所述存储器410中,并由处理器420执行,以完成通知的传递并获取通知实现过程,所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序4101在所述服务器4中的执行过程。例如,所述计算机程序4101可以被分割为定义模块、交换模块和存储模块。

处理器420是服务器的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器410内的软件程序和/或模块,以及调用存储在存储器410内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器420可包括一个或多个处理单元;优选的,处理器420可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器420中。

系统总线430是用来连接计算机内部各功能部件,可以传送数据信息、地址信息、控制信息,其种类可以是例如pci总线、isa总线、vesa总线等。处理器420的指令通过总线传递至存储器410,存储器410反馈数据给处理器420,系统总线430负责处理器420与存储器410之间的数据、指令交互。当然系统总线430还可以接入其他设备,例如网络接口、显示设备等。

所述服务器应至少包括cpu、芯片组、内存、磁盘系统等,其他构成部件在此不再赘述。

在本发明实施例中,该服务器所包括的处理器420执行的可运行程序具体为:

一种网络性能参数采集方法,包括:

定义nsurlsession的分类,在所述分类中设定网络请求的交换方法;

当终端启动预定应用时,通过所述分类获取nsurlsession中的代理对象,并动态交换所述代理对象中的回调方法;

当检测到所述预定应用的网络请求,通过交换后的回调方法将所述网络请求存储到预定义的字典中。

进一步的,所述当终端启动预定应用时,通过所述分类获取nsurlsession中的代理对象,并动态交换所述代理对象中的回调方法之前还包括:

定义一个工具类,所述工具类中定义通过runtime函数分别替换所述nsurlsession创建的类方法、所述代理对象的回调方法。

进一步的,所述通过所述分类获取nsurlsession中的代理对象,并动态交换所述代理对象中的回调方法包括:

自定义一个类,并单例加载所述类,设定所述类内部实现所述分类的交换方法。

进一步的,所述自定义一个类,并单例加载所述类,设定所述类内部实现所述分类的交换方法还包括:

在所述类内部创建异步串行队列,将所述类中所有的方法放入所述异步串行队列中。

进一步的,所述通过交换后的回调方法将所述网络请求存储到预定义的字典中具体为:

设定所述网络请求任务为键,网络性能参数为值存储所述字典中。

进一步的,所述设定所述网络请求任务为键,网络性能参数为值存储所述字典中还包括:

获取所述网络请求任务中错误的请求,从所述字典中移除错误的网络请求任务及对应的网络请求参数,并将所述字典中数据转换后上传至服务器。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1