一种数据获取方法、装置、电子设备及存储介质与流程

文档序号:20700127发布日期:2020-05-12 15:34阅读:189来源:国知局
一种数据获取方法、装置、电子设备及存储介质与流程

本申请涉及应用程序维护技术领域,尤其涉及一种数据获取方法、装置、电子设备及存储介质。



背景技术:

用户在使用应用程序时可能会遇到各种问题,例如页面跳转失败、页面显示异常等,此时,需要用户向服务器反应这些问题,以寻求服务器的解决和反馈。通常,用户需要对当前页面进行截屏,并将截屏图片反馈至服务器。服务器在接收到该截屏图片之后,会分析截屏图像上所呈现的图画和文字信息,例如error,以及截屏图片所呈现的异常状态,例如带有马赛克、蓝屏等分析应用程序的当前问题。

但是,上述通过截屏图片分析应用程序异常的方法存在一些问题。用户通常基于响应链规则对应用程序进行操作以获取自己需要的页面,因此,展示于终端的页面通常都会对应响应链中的某一页面层级,进一步地,如果用户通过多次触摸操作以获得截屏操作所在的页面,那么针对获得该页面的操作会相应地在该页面所在页面层级之前的前序页面层级上留下数据。显然,获得截屏页面需要这些前序页面层级上相应数据的支持。

然而,通过截屏图片来分析应用程序的异常原因,仅仅能够从该截屏图片进行分析,但是,大多数时间,截屏图片仅是问题所呈现的一种结果,而产生该问题的原因的数据可能存在于其它页面层级上。因此,仅单纯地通过分析截屏图片,所获取的数据并不完整,可能无法准确获知异常的原因。



技术实现要素:

本申请提供了一种数据获取方法、装置、电子设备及存储介质,以获取与截屏图片相应的全部数据,从而提高判断页面异常原因的准确性。

第一方面,本申请实施例提供了一种数据获取方法,包括:

确定截屏图片在响应链中对应的当前页面层级;

结合所述响应链和所述当前页面层级,确定与所述截屏图片关联的前序页面层级,所述前序页面层级为基于所述响应链获得所述当前页面层级所经历的页面层级,其中,所述当前页面层级以及各所述前序页面层级所存储的页面均为协议页面,所述协议页面用于提供核心数据;

分别获取各所述前序页面层级和所述当前页面层级对应的页面控制器;

利用所述页面控制器获取相应页面层级的核心数据。

在本发明实施例第一方面一种可能的实现方式中,所述确定截屏图片在响应链中对应的当前页面层级之前包括:

监听系统内是否存在截屏事件;

如果是,则从所述截屏事件中获取截屏图片。

在本发明实施例第一方面一种可能的实现方式中,所述分别获取各所述前序页面层级对应的页面控制器包括:

以各页面层级为起点,按照所述响应链的顺序,逐级查询每一个所述页面层级对应的下一响应者;

确定各所述页面层级对应的页面控制器,所述页面控制器为每一个所述页面层级的下一响应者中出现的第一个页面控制器。

在本发明实施例第一方面一种可能的实现方式中,所述利用页面控制器获取相应页面层级的核心数据包括:

判断所述页面控制器中是否存在导航栈,所述导航栈由多个栈构成,每一所述栈用于对应获取同一页面层级中不同页面的核心数据;

如果否,则获取相应页面层级中的页面;

利用所述页面控制器获取所述页面的核心数据作为所述页面层级的核心数据。

在本发明实施例第一方面一种可能的实现方式中,所述利用页面控制器获取相应页面层级的核心数据还包括

如果是,则遍历所述导航栈,获取所述导航栈中每一栈对应的子核心数据;

汇总同一导航栈中全部栈对应的子核心数据,得到与所述页面控制器相应的页面层级所对应的核心数据。

在本发明实施例第一方面一种可能的实现方式中,所述利用页面控制器获取相应页面层级的核心数据还包括:

按照从所述响应链中第一页面层级到所述当前页面层级的顺序,获取各页面层级的核心数据。

第二方面,本申请实施例提供了一种数据获取装置,包括:

当前页面层级确定模块,用于确定截屏图片在响应链中对应的当前页面层级;

前序页面层级确定模块,用于结合所述响应链和所述当前页面层级,确定与所述截屏图片关联的前序页面层级,所述前序页面层级为基于所述响应链获得所述当前页面层级所经历的页面层级,其中,所述当前页面层级以及各所述前序页面层级所存储的页面均为协议页面,所述协议页面用于提供核心数据;

页面控制器获取模块,用于分别获取各所述前序页面层级和所述当前页面层级对应的页面控制器;

核心数据获取模块,用于利用所述页面控制器获取相应页面层级的核心数据。

在本发明实施例第二方面一种可能的实现方式中,所述装置还包括:

监听模块,用于监听系统内是否存在截屏事件;

截屏图片获取模块,用于如果是,则从所述截屏事件中获取截屏图片。

在本发明实施例第二方面一种可能的实现方式中,所述页面控制器获取模块包括:

查询模块,用于以各页面层级为起点,按照所述响应链的顺序,逐级查询每一个所述页面层级对应的下一响应者;

页面控制器确定模块,用于确定各所述页面层级对应的页面控制器,所述页面控制器为每一个所述页面层级的下一响应者中出现的第一个页面控制器。

在本发明实施例第二方面一种可能的实现方式中,所述核心数据获取模块包括:

导航栈判断模块,用于判断所述页面控制器中是否存在导航栈,所述导航栈由多个栈构成,每一所述栈用于对应获取同一页面层级中不同页面的核心数据;

页面获取模块,用于如果否,则获取相应页面层级中的页面;

单页面数据获取模块,用于利用所述页面控制器获取所述页面的核心数据作为所述页面层级的核心数据。

在本发明实施例第二方面一种可能的实现方式中,所述核心数据获取模块还包括

子核心数据获取模块,用于如果是,则遍历所述导航栈,获取所述导航栈中每一栈对应的子核心数据;

汇总模块,用于汇总同一导航栈中全部栈对应的子核心数据,得到与所述页面控制器相应的页面层级所对应的核心数据。

在本发明实施例第二方面一种可能的实现方式中,所述核心数据获取模块按照从所述响应链中第一页面层级到所述当前页面层级的顺序,获取各页面层级的核心数据。

第三方面,本发明实施例提供了一种电子设备,包括:

处理器,以及

存储器,用于存储所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行所述的数据获取方法。

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

由以上技术可知,本申请提供了一种数据获取方法、装置、电子设备及存储介质,首先,确定截屏图片在响应链中对应的当前页面层级,然后,结合所述响应链和所述当前页面层级,确定与所述截屏图片关联的前序页面层级,其中,所述当前页面层级以及各所述前序页面层级所存储的页面均为协议页面,所述协议页面用于提供核心数据。随后,分别获取各所述前序页面层级和所述当前页面层级对应的页面控制器;最后,利用所述页面控制器可以获取相应页面层级的核心数据。可见,本申请所提供的数据获取方法能够获取与截屏图片相关联的全部页面层级上全部页面的数据,以作为确定页面异常原因的数据基础,从而有效提高确定页面异常原因的准确性。

附图说明

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

图1为本申请实施例提供的一种数据获取方法的流程图;

图2为本申请实施例提供的一种响应链的页面层级分布示意图;

图3为本申请实施例提供的一种获取截屏图片的方法的流程图;

图4为本申请实施例提供的一种确定页面层级对应的页面控制器的方法的流程图;

图5为本申请实施例提供的一种页面层级与页面控制器之间对应关系的示意图;

图6为本申请实施例提供的一种页面层级对应多页面的示意图;

图7为本申请实施例提供的一种获取核心数据的方法的流程图;

图8为本申请实施例提供的一种获取核心数据的顺序示意图;

图9为本申请实施例提供的一种数据获取装置实施例一的结构示意图;

图10为本申请实施例提供的一种数据获取装置实施例二的结构示意图;

图11为本申请实施例提供的一种数据获取装置实施例三的结构示意图;

图12为本申请实施例提供的一种数据获取装置实施例四的结构示意图;

图13为本申请实施例提供的一种数据获取装置实施例五的结构示意图;

图14为本发明实施例提供的电子设备的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本申请实施例提供的一种数据获取方法的流程图,如图1所示,本实施例所提供的数据获取方法包括:

s1、确定截屏图片在响应链中对应的当前页面层级。

通常,用户在使用应用程序时,是基于响应链机制,如图2所示,图2所展示的最外框相当于执行应用程序的终端设备的显示屏,上面的各个矩形框代表不同的页面层级,用户在使用应用程序时,需要逐级进入每个页面层级,以获得某一页面层级对用户发出的页面指令的响应,那么符合用户指令需求的页面也就会展示在该页面层级上。例如,用户所下发的页面指令为打开在应用软件p中与a的聊天界面。此时,需要首先点击页面层级subview上的虚拟按键,例如,显示的是应用软件p的图标,在点击之后,页面层级将跳转至下一页面层级superview,此时,该页面层级上展示有登录界面,通过在该页面层级上进行登录操作,页面层级将继续跳转至下一页面层级uiview,此时,该页面层级上展示有应用软件p的全部业务虚拟按键,包括聊天按键,用户通过点击聊天按键,页面层级将跳转至下一页面层级uiwindow,此时,该页面层级将展示与a的聊天界面,即该页面层级能够完成对用户页面指令的响应,用户将完成一系列touch操作。可见,服务器在响应某一用户页面指令时,需要基于响应链执行一些列的touch操作,相应的,这些经过的页面层级上将留有与操作对应的数据。如果,用户在于a的聊天过程中出现页面异常,例如,页面显示不完整,或者聊天数据缺失等问题,用户需要在截取当前界面的图片作为页面异常问题反馈的基础,反馈至服务器,那么此时截屏图片所对应的页面层级即为uiwindow。

具体地,同一服务器可能同时对应不同的应用软件,而且同一应用软件可能同时对应不同的用户,因此,同一服务器可能同时接收到来自大量用户所反馈的页面异常问题,及同时接收到大量的截屏图片,具体地,如图3所示,所述方法包括:

s101、监听系统内是否存在截屏事件;

s102、如果是,则从所述截屏事件中获取截屏图片。

用户的截屏动作反映在系统内就是一次截屏事件,即一张截屏图片对应一次截屏事件,服务器实时监听系统内是否存在截屏事件,即实时监听是否有用户需要解决页面异常问题,如果存在,则需要从截屏事件中获取截屏图片。通常,截屏事件会带有大量信息,例如截屏图片来自的设备id,截屏时间,以及截屏图片等。具体地,可以在appdelegate类中监听截屏事件。

进一步地,服务器可以根据实际工作的环境,选择实时获取截屏图片,以满足向用户反馈的时效性;同时也可以选择周期性从截屏事件中获取截屏图片,以避免高并发为服务器带来的工作负担。

进一步地,在获取到截屏图片之后,可以通过截屏图片的保存路径准确确定截屏图片所在的页面层级。

可见,本申请所提供的实施例可以准确监听系统内的截屏事件,并准确获取截屏图片,以供后续获取数据。

s2、结合所述响应链和所述当前页面层级,确定与所述截屏图片关联的前序页面层级,所述前序页面层级为基于所述响应链获得所述当前页面层级所经历的页面层级,其中,所述当前页面层级以及各所述前序页面层级所存储的页面均为协议页面,所述协议页面用于提供核心数据。

在确定了截屏图片所在的当前页面层级之后,结合响应链,可以确定当前页面层级之间的前序页面层级都有哪些。响应链的顺序是固定不变的,因此,在确定当前页面层级之后,可以确定与截屏图片关联的前序页面层级,其中前序页面层级即为基于响应链获得当前页面层级所经历的页面层级。以上例为例,当前页面层级为uiwindow,那么其前序层级则为subview、superview和uiview。如果当前页面层级为uiapplication,那么其前序层级则为subview、superview、uiview和uiwindow。

同时,本申请实施例规定每个层级所存储的页面均为协议页面,即这些协议页面可以提供核心数据。其中,协议可以为-(nsdictionary*)currentlogdata,核心数据采用字典类型,字典内容由各页面开发者自定义。这些核心数据包括用户id,页面对应的后台操作数据等无法直接显示于展示页面上的数据。

可见,本申请实施例所提供的技术方案为后续准确提供页面数据提供了技术基础,确保后续数据获取操作可以获取到页面层级对应的核心数据,以通过更深层次的数据确定页面异常的原因。

s3、分别获取各所述前序页面层级和所述当前页面层级对应的页面控制器。

在响应链中每一个用于响应用户页面指令的对象都可以称作响应者,这些响应者中包括不同的页面层级,也包括对应于不同页面层级的页面控制器。如图2所示,uiview的下一响应者即为viewcontroller,即页面控制器。页面控制器即为处理每个页面层级对应的数据的工具层,一个响应链中可以包括多个页面控制器,每个页面控制器对应一个页面层级;也可以只包括一个页面控制器,该页面控制器用于处理全部页面层级对应的数据。

其中,对于响应链中包含多个页面控制器的情况,通常,根据就近原则,页面控制器处理相邻页面层级的数据,具体地,如图4所示,可以通过以下过程确定页面层级对应的页面控制器。

s301、以各页面层级为起点,按照所述响应链的顺序,逐级查询每一个所述页面层级对应的下一响应者;

s302、确定各所述页面层级对应的页面控制器,所述页面控制器为每一个所述页面层级的下一响应者中出现的第一个页面控制器。

例如,在图5中,查找页面层级uiview的页面控制器,按照响应链的顺序,逐级查询uiview的下一响应者,其中,可知viewcontrollerc为uiview所有下一响应者中出现的第一个页面控制器,因此,viewcontrollerc为uiview的页面控制器;对于页面层级uiwindow,逐级查询uiwindow的下一响应者,其中,viewcontrollerd为uiwindow所有下一响应者中出现的第一个页面控制器,因此,viewcontrollerd为uiwindow的页面控制器。

通过本申请实施例提供的逐级查询页面控制器的方法,可以有效防止页面控制器与页面层级不对应的问题,从而有效保证页面控制器获取页面层级数据的准确性。

s4、利用所述页面控制器获取相应页面层级的核心数据。

页面控制器能够获取相应页面层级的核心数据,具体地,每个页面层级的数据均对应存储于对应的数据库中,页面控制器能够从该数据库中提取页面层级的全部核心数据。

通常,某一页面层级会存在多个页面,如图6所示,其中,viewb和viewc,viewd和viewe就是同一页面层级的多个页面,页面层级的核心数据实际对应的为该页面层级内页面的核心数据的汇总,对于同一页面层级包含多个页面的情况,即为每个页面对应的子核心数据的汇总。因此,对于包含不同页面数量的页面层级,可以根据图7所示的一种获取核心数据的方法来获取页面层级所对应的核心数据。具体地,

s401、判断所述页面控制器中是否存在导航栈,所述导航栈由多个栈构成,每一所述栈用于对应获取同一页面层级中不同页面的核心数据;

s402、如果否,则获取相应页面层级中的页面;

s403、利用所述页面控制器获取所述页面的核心数据作为所述页面层级的核心数据。

通常,页面控制器处理页面层级中的页面的数据时,采用一一对应处理的方式,因此,如果同一个页面层级中存在多个页面时,为了控制页面控制器的数量,可以在页面控制器内添加导航栈结构,该导航栈由多个栈组成,每个栈可以用于处理一个页面的数据;而如果同一页面层级中仅包含一个页面,则无需导航栈结构。因此,可以根据页面控制器中是否存在导航栈结构来判断同一个页面层级中是否存在多个页面。

具体地,如果页面控制器中没有导航栈结构,则说明该页面层级中仅包含一个页面,此时,可以利用该页面控制器直接获取该页面的核心数据,而该页面的核心数据也就是该页面层级的核心数据。

如图7所示,所述方法还包括:

s404、如果是,则遍历所述导航栈,获取所述导航栈中每一栈对应的子核心数据;

s405、汇总同一导航栈中全部栈对应的子核心数据,得到与所述页面控制器相应的页面层级所对应的核心数据。

如果否页面控制器中存在导航栈,则说明该页面层级中包含多个页面,此时,需要利用导航栈中每个栈来分别获取对应页面的子核心数据,将这些子核心数据汇总到一起才能够形成该页面层级对应的核心数据。

具体地,可以通过调用页面控制器的currentlogdata方法,获取页面层级的核心数据。对于存在导航栈的页面控制器,循环遍历导航栈,调用栈中控制器的currentlogdata方法,此时,各页面的数据将以数组的形式存在内存中。

进一步地,如图8所示,按照从所述响应链中第一页面层级到所述当前页面层级的顺序,获取各页面层级的核心数据。

假设页面a对应响应链中的第一页面层级,页面b对应响应链中的第二页面层级,页面c对应响应链中的第三页面层级,同时页面c也是当前页面层级,即截屏图片所在的页面层级。该获取核心数据的顺序与用户获得截屏图片的操作顺序相一致,令所获得的核心数据带有操作顺序和时间顺序性,能够符合操作逻辑,方便后续根据核心数据分析页面异常的原因。

进一步地,当获取与截屏图片相关联的全部核心数据之后,可以弹出页面向用户展示截屏图片,并为用户提供输入问题的对话框,最后将截屏图片、核心数据以及用户输入的问题全部反馈至服务器,以供服务器确定页面异常的原因。

具体发送反馈数据的格式可以如下所示:

由以上技术可知,本申请提供了一种数据获取方法、装置、电子设备及存储介质,首先,确定截屏图片在响应链中对应的当前页面层级,然后,结合所述响应链和所述当前页面层级,确定与所述截屏图片关联的前序页面层级,其中,所述当前页面层级以及各所述前序页面层级所存储的页面均为协议页面,所述协议页面用于提供核心数据。随后,分别获取各所述前序页面层级和所述当前页面层级对应的页面控制器;最后,利用所述页面控制器可以获取相应页面层级的核心数据。可见,本申请所提供的数据获取方法能够获取与截屏图片相关联的全部页面层级上全部页面的数据,以作为确定页面异常原因的数据基础,从而有效提高确定页面异常原因的准确性。

图9为本申请实施例提供的一种数据获取装置实施例一的结构示意图,包括:当前页面层级确定模块1,用于确定截屏图片在响应链中对应的当前页面层级;前序页面层级确定模块2,用于结合所述响应链和所述当前页面层级,确定与所述截屏图片关联的前序页面层级,所述前序页面层级为基于所述响应链获得所述当前页面层级所经历的页面层级,其中,所述当前页面层级以及各所述前序页面层级所存储的页面均为协议页面,所述协议页面用于提供核心数据;页面控制器获取模块3,用于分别获取各所述前序页面层级和所述当前页面层级对应的页面控制器;核心数据获取模块4,用于利用所述页面控制器获取相应页面层级的核心数据。

图10为本申请实施例提供的一种数据获取装置实施例二的结构示意图,所述装置还包括:监听模块5,用于监听系统内是否存在截屏事件;截屏图片获取模块6,用于如果是,则从所述截屏事件中获取截屏图片。

图11为本申请实施例提供的一种数据获取装置实施例三的结构示意图,所述页面控制器获取模块3包括:查询模块31,用于以各页面层级为起点,按照所述响应链的顺序,逐级查询每一个所述页面层级对应的下一响应者;页面控制器确定模块32,用于确定各所述页面层级对应的页面控制器,所述页面控制器为每一个所述页面层级的下一响应者中出现的第一个页面控制器。

图12为本申请实施例提供的一种数据获取装置实施例四的结构示意图,所述核心数据获取模块4包括:导航栈判断模块41,用于判断所述页面控制器中是否存在导航栈,所述导航栈由多个栈构成,每一所述栈用于对应获取同一页面层级中不同页面的核心数据;页面获取模块42,用于如果否,则获取相应页面层级中的页面;单页面数据获取模块43,用于利用所述页面控制器获取所述页面的核心数据作为所述页面层级的核心数据。

图13为本申请实施例提供的一种数据获取装置实施例五的结构示意图,所述核心数据获取模块4还包括子核心数据获取模块44,用于如果是,则遍历所述导航栈,获取所述导航栈中每一栈对应的子核心数据;汇总模块45,用于汇总同一导航栈中全部栈对应的子核心数据,得到与所述页面控制器相应的页面层级所对应的核心数据。

进一步地,所述核心数据获取模块按照从所述响应链中第一页面层级到所述当前页面层级的顺序,获取各页面层级的核心数据。

图14为本发明实施例提供的电子设备的硬件结构示意图。该电子设备包括:存储器101和处理器102;

存储器101,用于存储计算机程序;

处理器102,用于执行存储器存储的计算机程序,以实现上述实施例中的数据获取方法。具体可以参见前述方法实施例中的相关描述。

可选地,存储器101既可以是独立的,也可以跟处理器102集成在一起。

当所述存储器101是独立于处理器102之外的器件时,所述电子设备还可以包括:

总线103,用于连接所述存储器101和处理器102。

本发明实施例提供的电子设备可用于执行上述实施例中任一所示的数据获取方法,其实现方式和技术效果类似,本发明实施例此处不再赘述。

本发明实施例还提供一种可读存储介质,可读存储介质中存储有计算机程序,当消息发送的装置的至少一个处理器执行该计算机程序时,消息发送的装置执行上述实施例任一所述的数据获取方法。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于以计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

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

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