一种在混合APP中确定用户操作记录的方法及装置与流程

文档序号:11216163阅读:412来源:国知局
一种在混合APP中确定用户操作记录的方法及装置与流程

本发明的实施方式涉及计算机软件领域,更具体地,本发明的实施方式涉及一种在混合app中确定用户操作记录的方法及装置。



背景技术:

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

在有些场景下需要确定用户的操作行为,目前主要采用如下几种方式来采集:

先确定哪些操作是有意义的,是需要埋点的,然后将需要收集的操作行为汇总后交与开发人员,然后,开发人员在指定的操作行为的web页面的代码处编写埋点代码,通过埋点代码将操作行为数据发送给服务器,服务器侧的数据分析人员再从上报的操作行为数据中筛选、处理并统计出结果。

但是上述方法存在如下缺陷:

1、开发人员需要根据埋点需求,手工编写埋点代码,因此存在耗时较长的缺陷;另外,上述方法对主动埋点的事件进行上报,没有主动埋点的事件不会上报,在产品上线后,如果产品、运营需要统计之前没有的埋点数据,需要开发人员添加代码,重新发布,从这个角度来讲,也存在耗时较长的缺陷;

2、用户在web页的埋点与在app的埋点无法直接建立联系,web页的埋点与app的埋点是割裂的,无法获取按时序发生的用户的操作行为。

另一种方法为通过hybridapp的异常反馈方式来实现,具体为,将异常线程的调用栈信息通过网络传输给服务器,服务器解析这些信息,将其翻译为程序的函数调用关系。一般情况下,技术人员可以看到被解析出的异常类型、异常代码函数,甚至发生异常的代码行,技术人员通过解析这些有限的信息定位问题。

但是,上述方案存在如下缺陷:

1、现有的技术方案,对于异常调用栈信息没有定位到开发人员代码的情况,是难以分析、定位问题的,存在一定的局限性。

2、现有技术的web页异常捕获技术,可以获得javascript异常线程的调用栈,并且能提供javascript的函数调用关系。但javascript异常未必会导致hybridapp崩溃,且相关的异常信息数量多,容易掩盖真正需要解决的问题,因此,存在准确度较低的缺陷。



技术实现要素:

因此,现有技术的确定用户操作记录的行为中存在多个问题企待解决。

由此,本公开的目的在于至少地解决上述其中一个问题,以提供良好的用户体验。

根据本公开的第一方面,提供了一种在混合app中确定用户操作记录的方法,所述混合app包括app应用程序和web浏览器组件,该方法包括:

所述web浏览器组件加载一个或多个web页面;

从所述app应用程序中向所述web页面注入脚本程序;

通过所述脚本程序捕捉所述web页面内的第二操作记录;以及

将所述app应用程序内的第一操作记录与所述第二操作记录结合,以确定用户操作记录。

根据本公开的一个实施方式,其中,所述第一操作记录为通过app埋点所记录的app应用程序操作记录。

根据本公开的一个实施方式,其中,所述脚本程序是在每个所述web页面加载完成之后注入到所述web页面的。

根据本公开的一个实施方式,其中,所述脚本程序为javascript脚本。

根据本公开的一个实施方式,其中,所述第二操作记录为通过web埋点所记录的web页面操作记录。

根据本公开的一个实施方式,其中,所述web页面操作记录包括单一web页面内部的web页面内操作记录。

根据本公开的一个实施方式,其中,所述web页面内操作记录包括用户的操作事件,所述用户的操作事件包括下列中的一个或多个:

事件的类型、事件触发的时间、操作所处屏幕的坐标、屏幕的宽度、被操作元素的信息。

根据本公开的一个实施方式,其中,所述被操作元素的信息包括下列中的一个或多个:

元素的id,元素的class,元素的name,元素的value,元素的src,元素的祖先id,元素的标签名。

根据本公开的一个实施方式,其中,被操作元素的信息通过如下方式捕捉:

在所述元素的根元素上进行侦听,以获取针对该根元素下所有元素的事件。

根据本公开的一个实施方式,其中,所述web页面操作记录包括web页面跳转记录。

根据本公开的一个实施方式,其中,所述web页面跳转记录包括下列中的一个或多个:

不同web页面之间的web页面间跳转记录;以及

同一web页面内的web页面内跳转记录。

根据本公开的一个实施方式,其中,同一web页面内的跳转记录是通过监控跳转历史捕捉锚点得来的。

根据本公开的一个实施方式,其中,所述用户操作记录包括操作信息,并且所述方法进一步包括:

设置操作信息队列,在所述操作信息队列中来存储所述操作信息。

根据本公开的一个实施方式,其中,按照所述操作信息触发的时间顺序在所述操作信息队列中来存储所述操作信息。

根据本公开的一个实施方式,进一步包括:

为所述操作信息队列设置第一长度阈值;

当所述操作信息队列中存储的操作信息达到所述第一长度阈值时,按照存储时间顺序,将存储时间最早的操作信息进行丢弃。

根据本公开的一个实施方式,其中,所述第一操作记录包括app操作信息,所述第二操作记录包括web操作信息,所述app操作信息和所述web操作信息存储在所述操作信息队列中。

根据本公开的一个实施方式,其中,所述用户操作记录进一步包括场景信息,并且所述方法进一步包括:

设置场景信息队列,在所述场景信息队列中存储所述场景信息。

根据本公开的一个实施方式,其中,按照所述场景信息触发的时间顺序在所述场景信息队列中存储所述场景信息。

根据本公开的一个实施方式,其中,所述方法还包括:

为所述场景信息队列设置第二长度阈值;

当所述场景信息队列中存储的场景信息达到所述第二长度阈值时,按照存储时间顺序,将存储时间最早的场景信息进行丢弃。

根据本公开的一个实施方式,其中,所述第一操作记录包括app场景信息,所述第二操作记录包括web场景信息,所述app场景信息和所述web场景信息存储在所述场景信息队列中。

根据本公开第二方面,提供一种用于定位混合app中的异常位置的方法,包括:

通过如第一方面,或者第一方面的任意一实施方式所述的方法中任意一项所述的方法以在所述混合app中确定用户操作记录;以及

通过所确定的用户操作记录来定位所述混合app的异常位置。

根据本公开第三方面,提供一种用于还原混合app的操作场景的方法,包括:

通过如第一方面,或者第一方面的任意一实施方式所述的方法中任意一项所述的方法,以在所述混合app中确定用户操作记录;以及

根据所述用户操作记录来还原所述混合app的操作场景。

根据本公开第四方面,提供一种在混合app中确定用户操作记录的设备,所述混合app包括app应用程序和web浏览器组件,该设备包括:

用于使所述web浏览器组件加载一个或多个web页面的装置;

用于从所述app应用程序中向所述web页面注入脚本程序的装置;

用于通过所述脚本程序捕捉所述web页面内的第二操作记录的装置;以及

用于将所述app应用程序内的第一操作记录与所述第二操作记录结合,以确定用户操作记录的装置。

根据本公开的一个实施方式,其中,所述第一操作记录为通过app埋点所记录的app应用程序操作记录。

根据本公开的一个实施方式,其中,所述脚本程序是在每个所述web页面加载完成之后注入到所述web页面的。

根据本公开的一个实施方式,其中,所述脚本程序为javascript脚本。

根据本公开的一个实施方式,其中,所述第二操作记录为通过web埋点所记录的web页面操作记录。

根据本公开的一个实施方式,其中,所述web页面操作记录包括单一web页面内部的web页面内操作记录。

根据本公开的一个实施方式,其中,所述web页面内操作记录包括用户的操作事件,所述用户的操作事件包括下列中的一个或多个:

事件的类型、事件触发的时间、操作所处屏幕的坐标、屏幕的宽度、被操作元素的信息。

根据本公开的一个实施方式,其中,所述被操作元素的信息包括下列中的一个或多个:

元素的id,元素的class,元素的name,元素的value,元素的src,元素的祖先id,元素的标签名。

根据本公开的一个实施方式,其中,包括用于通过如下方式捕捉被操作元素的信息的装置:

在所述元素的根元素上进行侦听,以获取针对该根元素下所有元素的事件。

根据本公开的一个实施方式,其中,所述web页面操作记录包括web页面跳转记录。

根据本公开的一个实施方式,其中,所述web页面跳转记录包括下列中的一个或多个:

不同web页面之间的web页面间跳转记录;以及

同一web页面内的web页面内跳转记录。

根据本公开的一个实施方式,其中,同一web页面内的跳转记录是通过监控跳转历史捕捉锚点得来的。

根据本公开的一个实施方式,其中,所述用户操作记录包括操作信息,并且所述装置进一步包括:

用于设置操作信息队列的装置,及用于在所述操作信息队列中来存储所述操作信息的装置。

根据本公开的一个实施方式,其中,用于在所述操作信息队列中来存储所述操作信息的装置,按照所述操作信息触发的时间顺序在所述操作信息队列中来存储所述操作信息。

根据本公开的一个实施方式,进一步包括:用于为所述操作信息队列设置第一长度阈值的装置;及

当所述操作信息队列中存储的操作信息达到所述第一长度阈值时,用于按照存储时间顺序,将存储时间最早的操作信息进行丢弃的装置。

根据本公开的一个实施方式,其中,所述第一操作记录包括app操作信息,所述第二操作记录包括web操作信息,所述app操作信息和所述web操作信息存储在所述操作信息队列中。

根据本公开的一个实施方式,其中,所述用户操作记录进一步包括场景信息,并且所述设备进一步包括:

用于设置场景信息队列的装置,及用于在所述场景信息队列中存储所述场景信息的装置。

根据本公开的一个实施方式,其中,用于在所述场景信息队列中存储所述场景信息的装置,按照所述场景信息触发的时间顺序在所述场景信息队列中存储所述场景信息。

根据本公开的一个实施方式,其中,所述设备还包括:用于为所述场景信息队列设置第二长度阈值的装置;及

当所述场景信息队列中存储的场景信息达到所述第二长度阈值时,用于按照存储时间顺序,将存储时间最早的场景信息进行丢弃的装置。

根据本公开的一个实施方式,其中,所述第一操作记录包括app场景信息,所述第二操作记录包括web场景信息,所述app场景信息和所述web场景信息存储在所述场景信息队列中。

根据本公开第五方面,提供一种用户终端,包括:

一个或者多个处理器;

存储器;

存储在所述存储器中的程序,当被所述一个或者多个处理器执行时,所述程序使所述处理器执行如上所述的方法。

根据本公开第六方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被处理器执行时,使得所述处理器执行如上所述的方法。

本公开的实施方式能够实现以下技术效果中的至少一种:

该方案不需要人工来埋点,也不需要开发人员多次添加埋点代码,因此,可以降低耗费的时间,可以将app中的操作行为和web中的操作行为结合起来,因此,可以获取用户按照时序发生的操作行为;另一方面,该方案不依赖于异常调用栈,因此,可以避免依赖异常调用栈所导致的局限性,此外,不是通过javascript异常来确定hybridapp崩溃的,因此,可以提高获取的操作行为的准确度。

需要理解的是,本公开的教导并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本公开的其他实施方式还能够实现上面未提到的有益效果。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1a示意性地示出了根据本发明实施方式的在混合app中确定用户操作记录的方法流程图;

图1b示意性地示出了根据本发明实施方式的脚本程序利用dom事件传递机制来获取第二操作记录的示意图;

图1c示意性地示出了根据本发明实施方式的收集url跳转信息的示意图;

图1d示意性地示出了现有技术中web埋点模块和app埋点模块的操作示意图;

图1e示意性地示出了本发明实施例中app埋点模块的操作示意图;

图2示意性地示出了根据本发明实施方式的在混合app中确定用户操作记录的装置示意图;

图3示意性地示出了根据本发明实施方式的用于在混合app中确定用户操作记录的装置示意图;以及

图4示意性地示出了根据本发明实施方式的用于在混合app中确定用户操作记录的装置示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

根据本发明的实施方式,提出了一种在混合app中确定用户操作记录的方法及装置。

在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

下面对本发明实施例中可能用到的技术术语进行简单描述:

调用栈,(callstack)意思是调用堆栈,调用堆栈是一个方法列表,按调用顺序保存所有在运行期被调用的方法。

埋点,也叫埋点分析,是app、网站分析的一种常用的数据采集方法。在产品、服务转化关键点植入统计代码,追踪用户在平台多个界面上的系列行为。

时间戳(timestamp)是表征时间的参数,例如其可以是格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

hybridapp,即混合app,是在app中内嵌浏览器组件,由此将一部分功能改为h5前端来实现。。

javascript,是一种直译式脚本语言,同时也是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为javascript引擎,为浏览器的一部分,广泛用于客户端的脚本语言。

发明概述

本发明人发现,可以在app中向web页面注入脚本程序,app可以通过脚本程序自动获取web中的操作行为,由于app本身可以获取app中的操作行为,因此,app中既能得到web中的操作行为,也可以获取app中的操作行为,将两类行为结合起来,进而可以获取用户按照时序执行的操作行为,可以避免现有技术中通过埋点方式获取用户的操作行为时,web埋点模块仅能获取web中的操作行为,app埋点模块仅能获取app中的操作行为,两类行为是割裂开的,不能有效结合的缺陷,同时,由于不需要人工参与埋点,因此,可以降低耗时、提高效率。另外,该方案是完全不同于通过hybridapp的异常反馈方式的方案,可以将web中的操作行为和app中的操作行为有效结合起来,因此,可以避免通过hybridapp的异常反馈方式来实现确定操作行为所带来的缺陷。

在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。

应用场景总览

例如,hybridapp既包括app本身的功能模块,也包括web浏览器组件,先通过app向web页面注入脚本程序,通过所述脚本程序捕捉所述web页面内的用户的操作记录;由于hybridapp可以获取app应用程序中的操作记录,因此,hybridapp可以将web页面内的用户的操作记录和app应用程序中的操作记录进行结合来确定用户的操作记录。

示例性方法

下面结合附图对本发明的具体实施方式进行详细描述。

图1a示出了根据本发明一个实施方式的在混合app中确定用户操作记录的交互图。

如图1a所示,本发明提供一种在混合app中确定用户操作记录的方法,该方法包括如下操作。

在操作a110,所述web浏览器组件加载一个或多个web页面;

以及,在操作a120:从所述app应用程序中向所述web页面注入脚本程序;

接下来,在操作a130:通过所述脚本程序捕捉所述web页面内的第二操作记录;以及

在操作a140:将所述app应用程序内的第一操作记录与所述第二操作记录结合,以确定用户操作记录。

根据一个实施方式,通过所述脚本程序捕捉所述web页面内的第二操作记录时,优选地,脚本程序利用web页面中的dom(documentobjectmodel,文档对象模型)事件传递机制来获取第二操作记录,具体为,当用户发起操作时,事件在信息捕获阶段从顶级元素一层层的传递给下级元素,当找到事件触发的元素(h5标签)时,该事件又会一层一层冒泡到顶级元素,因此,如果在所有元素的共同父级元素上注册事件监听,可以获取所有元素的事件。如图1b所示,在document这里进行监听,便可以获取所有元素的事件触发机会。在监听事件的响应中利用event对象,可以获取到元素和事件本身的相关信息。

根据一个实施方式,优选地,所述第一操作记录可以为通过app埋点所记录的app应用程序操作记录。可以理解,用户操作埋点信息一般是跟踪用户操作的埋点信息,例如,用户基于页面进行相关按钮点击等操作的信息。屏幕埋点信息一般是指反映页面调用关系或页面展示顺序的信息。

根据一个实施方式,优选地,所述脚本程序可以在每个所述web页面加载完成之后注入到所述web页面的。也就是说,在web页面由浏览器组件加载完成时,从所述app应用程序中向所述web页面注入脚本程序。

根据本发明的一个实施方式,优选地,所述脚本程序为javascript脚本,当然也可以是其他形式,在此不做具体限定。

根据本发明的一个实施方式,优选地,所述第二操作记录为通过web埋点所记录的web页面操作记录。

根据本发明的一个实施方式,优选地,所述web页面操作记录包括单一web页面内部的web页面内操作记录。

根据本发明的一个实施方式,优选地,所述web页面内操作记录包括用户的操作事件,所述用户的操作事件包括下列中的一个或多个:

事件的类型、事件触发的时间、操作所处屏幕的坐标、屏幕的宽度、被操作元素的信息。

根据本发明的一个实施方式,优选地,所述被操作元素的信息包括下列中的一个或多个:

元素的id,元素的class,元素的name,元素的value,元素的src,元素的祖先id,元素的标签名。

如下为web页面操作记录的示例,其中,e为事件、click代表一种名为点击的事件、w为屏幕的宽度、x为触发事件的横坐标、y为触发事件的纵坐标、id为元素的id属性、t为用户事件发生的时间戳、pid为父级元素的id、pt为父亲元素的标签名、c为元素的class、tp为元素的标签名、src为有链接属性标签所指向的链接(如img标签的图片地址、a标签的超链地址),如下只是示例,web页面操作记录所包括的信息并不限于此。

e_click_t_1487649048387_w_320_x_108_y_313_id_btncard-back_pld_app_pt_div_c_verify-papers_placeholder_1bk07_tp_img_src_https:#i.epay.126.net/m/jr/dist/images/idcard-back.png?38e1a1951efa204a,

e_click_t_1487649045203_w_320_x_160_y_373_pld_app_pt_div_tp-div,

图1c为上述示例中的web页面操作记录中的一条信息的具体解析,在此不再进行详述。

根据本发明的一个实施方式,优选地,被操作元素的信息通过如下方式捕捉:

在所述元素的根元素上进行侦听,以获取针对该根元素下所有元素的事件。如图1b所示,在document根元素上进行监听,可以获取针对该根元素下所有元素的事件。

根据本发明的一个实施方式,优选地,所述web页面操作记录包括web页面跳转记录。

根据本发明的一个实施方式,优选地,所述web页面跳转记录包括下列中的一个或多个:

不同web页面之间的web页面间跳转记录;以及

同一web页面内的web页面内跳转记录。

本发明中,优选地,同一web页面内的跳转记录是通过监控跳转历史捕捉锚点得来的。也就是说,本发明实施例中,可以通过从所述app应用程序中向所述web页面注入脚本程序来配合记录url(uniformresourcelocator,统一资源定位符)的变化,具体为,在每个web页面由浏览器组件加载完成时,注入该脚本程序,然后就可以实现自动记录不发请求的url变化。用该脚本程序的自定义的方法替换了原有history对象(该history对象用于记录用户访问的url列表)的replacestate和pushstate方法,以达到当history变化时,记录url的目的,进而可以避免当web采用单页应用技术方案时无法获取真实url变化的问题,同时配合app捕获浏览器主动发起的url请求事件,从而可以完整记录浏览器页面以及页面内跳转的路径。此处在两个地方涉及到捕获,具体为替换或监听原有history对象的replacestate处和替换或监听原有history对象的pushstate处。

下图收集url跳转信息的示例,操作发生的时间按照6-5-4-3-2-1-0的方向进行,例如,时序上第0行为最近发生的操作,第6行代表最早发生的操作,s表示该记录代表触发了url跳转、t表示url跳转发生的时间戳,之后紧接的项目表示跳转的url地址,第6行表示发生一次url跳转、从第4行到第5行表示发生url跳转,地址与第6行的地址一致,从第3行到第0行表示发生了几次页面内的url锚点跳转。该示例为了减少报文大小,与上次跳转一致的url用same代替。需要说明的是,上述为一种示例,并不限定于此。

0s_t_1487649046403_https://jrapp.dai.163.com/index.html#!verify-papers

1s_t_1487649045403_https://jrapp.dai.163.com/index.html#!verify

2s_t_1487649045001_https://jrapp.dai.163.com/index.html#!promotion

3s_t_1487649043901_https://jrapp.dai.163.com/index.html#!login,

4s_t_1487649043801_same

5s_t_1487649043201_same

6s_t_1487649043001_https://jrapp.dai.163.com/index.html

现有web埋点与app埋点相互隔离,难以相互衔接,因此,难以还原用户完整的操作序列,为分析、统计、定位造成了麻烦,如图1d所示,虽然操作行为是按照“进入首页,进入我的tab页进入网易小贷”到“进入小贷首页”到“设置标题栏样式获取用户信息”到“点击完善订单进入资料认证页”到“设置标题栏样式”到“点击证件上传”到“图片上传”的时序来操作的,但是,app埋点模块获取的是“进入首页,进入我的tab页进入网易小贷”、“设置标题栏样式获取用户信息”、“设置标题栏样式”、“图片上传”这些操作,web埋点模块获取的是“进入小贷首页”、“点击完善订单进入资料认证页”、“点击证件上传”这些操作,并各自分析。也就是说,app埋点模块获取的是app里面发生的操作行为,web埋点模块获取的是web里面发生的操作行为,各自进行汇总分析,无法获取用户真实的操作记录。

图1e为本发明中获取用户操作的示意图,无论是app内的用户的操作行为,还是web内的用户的操作行为,app埋点模块都可以按照时序获取,进而可将web内的用户的操作行为和app内的用户的操作行为无缝整合,避免由于web埋点模块获取的操作行为与app埋点模块获取的操作行为相互隔离带来的问题。

本发明中,优选地,可以将操作信息以某种数据结构,比如队列,按顺序存储起来。当app发生异常崩溃时,随着异常线程调用栈信息一起传送至服务器,可以让hybridapp架构的app具备还原异常场景的能力。

因此,更进一步地,根据本发明的一个实施方式,其中,所述用户操作记录包括操作信息,并且所述方法进一步包括:

设置操作信息队列,在所述操作信息队列中来存储所述操作信息。

优选地,按照所述操作信息触发的时间顺序在所述操作信息队列中来存储所述操作信息。

在一种优选实施方式中,为了节省存储空间,针对操作信息队列进行长度管理。例如,为所述操作信息队列设置第一长度阈值;当所述操作信息队列中存储的操作信息达到所述第一长度阈值时,按照存储时间顺序,将存储时间最早的操作信息进行丢弃。操作信息队列的长度可以根据实际需要指定为任意数量。当进入操作信息队列的操作信息达到队列长度上限时,将操作队列中最早进入的操作信息抛弃。由此保证操作信息队列仅保存最近发生的、有限个数的、有序的操作信息。

也就是说,可以通过设置一个操作信息队列来存储操作信息,操作信息按照加入的顺序,依次有序存储到操作信息队列中。例如,提供一个长度有限的操作信息队列。当程序启动之后,用于存储来自程序的操作信息。操作信息按照加入的顺序,依次有序的存储到操作信息队列。操作信息包含且不限于用户操作埋点信息、屏幕埋点信息、技术设计相关信息、web页面的url跳转信息、用户在web页面中操作事件信息,等等。

优选地,所述第一操作记录包括app操作信息,所述第二操作记录包括web操作信息,所述app操作信息和所述web操作信息存储在所述操作信息队列中。

操作信息中的某些类型信息,对于定位异常崩溃有着很重要的作用,比如用户操作所处的页面位置、用户正在进行的业务等等。为了防止这些重要的操作信息被后面加入的操作信息挤占,被操作信息队列丢弃掉。本发明方法优选方式中,还会额外提供一个场景信息队列,按照类似前述方式单独存储这些重要的操作信息。场景信息队列是该发明方法提供的一个可选策略。因此,更进一步地,所述用户操作记录进一步包括场景信息,并且所述方法进一步包括:

设置场景信息队列,在所述场景信息队列中存储所述场景信息。

优选地,按照所述场景信息触发的时间顺序在所述场景信息队列中存储所述场景信息。

具体的,可以通过在程序运行客户端设置一个场景信息队列来存储这些比较重要的场景信息,场景信息按照加入的顺序,依次有序存储到场景信息队列中。例如,提供一个长度有限的场景信息队列。当程序启动之后,用于存储来自程序的场景信息。场景信息按照加入的顺序,依次有序的存储到场景信息队列。场景信息一般是指屏幕埋点信息,包含且不限于:用户操作所处客户端页面的位置信息、用户所处业务的业务信息、用户所处web页面的位置信息,等等。

场景信息是可反映页面调用关系或页面展示顺序的信息。其中,用户操作所处客户端页面的位置信息,顾名思义,是指客户端在当前哪一个页面上、即当前页面的位置信息。用户所处业务的业务信息,是指用户正在进行的业务流程的某个环节或某个节点的信息。用户所处web页面的位置信息为用户所处的web页面的地址信息,包括用户所处web页面的页面本身的地址信息,还可以包括页面中子位置的地址信息。

在一种优选实施方式中,为了节省存储空间,针对场景信息队列进行长度管理。例如,为所述场景信息队列设置第二长度阈值;

当所述场景信息队列中存储的场景信息达到所述第二长度阈值时,按照存储时间顺序,将存储时间最早的场景信息进行丢弃。优选地,场景信息队列的长度可以根据实际需要指定为任意数量。当进入场景信息队列的操作信息达到队列长度上限时,将场景信息队列中最早进入的场景信息抛弃。由此保证场景信息队列仅保存最近发生的、有限个数的、有序的场景信息。

优选地,所述第一操作记录包括app场景信息,所述第二操作记录包括web场景信息,所述app场景信息和所述web场景信息存储在所述场景信息队列中。

如下为操作信息队列的一种示例:

*进入首页

*进入我的tab页

*进入网易小贷

*进入小贷首页

设置标题栏样式

获取用户信息

点击完善订单

*进入资料认证页

设置标题栏样式

点击证件上传

图片上传

如下为场景信息队列的一种示例:

*进入首页

*进入我的tab页

*进入网易小贷

*进入小贷首页

*进入资料认证页

注:符号*表示这是一个页面埋点操作信息。

本发明一个实施方式中,还提出一种的用于定位混合app中的异常位置的方法:

具体为,根据前面所描述的方法以在所述混合app中确定用户操作记录;以及通过所确定的用户操作记录来定位所述混合app的异常位置。

如下所示的是现有技术中确定操作记录中的异常位置的方法,时序上第0行代表最近发生的操作,20代表最早发生的操作,从20到0操作发生的时间距离当前时间越来越近。在如下所示的示例中,第0行是问题发生的直接所在,但是没有提供相关的定位信息,第1行表示当选择图片完成时触发了第o行的异常,但是之后第2行到20行都没有定位到技术人员所写的代码(其中,第19行的nefinance表示技术人员所写的代码库,主线程一开始都会存在一个main的调用,第一个nefinance位置对于解析异常没有参考价值。),如果只凭借下面所示的信息,是无法具体定位异常具体发生的原因。

name=sigsegv

reason=segv_accerr

callstack=

0libsystem_platform.dylib_sigtramp+68

1uikit-[uiimagepickercontroller_imagepickerdidcompletewithinfo%:]

2photolibraryplnotifyimagepickeroflmageavailability+88

3photolibrary0x00000001925617280x1924d8000+562984

4photolibrary0x00000001925615400x1924d8000+562496

5uikit-[uiapplicationsendaction:to:from:forevent:]

6uikit-[uicontrol_sendactionsforevents:withevent:]

7uikit-[uicontroltouchesended:withevent:]

8uikit-[uiwindow_sendtouchesforevent:]

9uikit-[uiwindowsendevent:]

10uikit-[uiapplicationsendevent:]

11uikit_uiapplicationhandleeventfromqueueevent

12uikit_uiapplicationhandleeventqueue

13corefoundation_cfrunloop_is_calling_out_to_a_sourceo_perform_function_

14corefoundation_cfrunloopdosources0

15corefoundation_cfrunlooprun

16corefoundationcfrunlooprunspecific+396

17graphicsservicesgseventrunmodal+168

18uikituiapplicationmain+1488

19nefinance_mainmain.m:35

20libdyld.dylib_start

如下为依据本发明中提供的方法来确定异常位置的方法,(注:“same”表示与前一个url地址相同)。技术人员对操作信息队列解析后发现,该异常发生时,用户先进入app首页(19行),然后点击tab我的(18行),从我的页面进入小贷首页(17行)。在webview中(14-16行),然后点击功能“头部”(11行),跳转后经过几次重定向到达“资料认证”页面(6行),其跳转流程是锚点登录#!login(10行)至锚点#!promotion(8行)至锚点#!verify(6行)。在资料认证页面点击“证件上传”(5行),进入证件上传页面,其锚点为#!verify-papers(3行)。在该页面点击上传身份证正面(1行),这个时候前端发起了hybrid接口调用,调用了imageupload接口(0行)。这样就可以明确定位到该异常发生在https://jrapp.dai.163.com/index.html#!verify-papers页面点击上传身份证正面时。这些信息对于技术人员还原异常发生时的场景起到了很重要的作用。

0webview_commands_imageupload

1

e_click_t_1487649048387_w_320_x_108_y_313_pld_app_pt_div_c_verify-papers_plaoeholder_1bk07_tp_img_src_https://i.epay.126.net/m/jr/dist/images/idcard-back.png?38e1a1951efa204a,

2webview_commands_setnavigationbarstyle

3s_t_1487649046413_https://jrapp.dai.163.com/index.html#!verify-papers,

4webview_commands_setnavigationbarstyle,

5e_click_t_1487649045203_w_320x_160_y_373_pld_app_pt_div_tp_div,

6s_t_1487649045403_https://jrapp.dai.163.com/index.html#!verify,

7webview_commands_setnavigationbarstyle,

8s_t_1487649045001_https://jrapp.dai.163.com/index.html#!promotion,

9webview_commands_setnavigationbarstyle,

10s_t_1487649043901_https://jrapp.dai.163.com/index.html#!login,

11

e_click_t_1487649043207_w_320_x_123_y_61_pld_app_pt_div_c_home_label_losn9_tp_div,

12webview_commands_getuserlnfo,

13webview_commands_setnavigationbarstyle,

14s_t_1487649038001_same,

15s_t_1487649032001_same,

16s_t_1487649030001_https://jrapp.dai.163.com/index.html,

17passet_enterpage_网易小贷,

18pdownbar_enterpage-我的,

19pdownbar_enterpage_首页

本发明中还提出一种用于还原混合app的操作场景的方法,包括:通过前面所描述的方法在所述混合app中确定用户操作记录;以及

根据所述用户操作记录来还原所述混合app的操作场景。

参阅图2所示,本发明实施例还提出一种在混合app中确定用户操作记录的设备,所述混合app包括app应用程序和web浏览器组件,该设备包括:

用于使所述web浏览器组件加载一个或多个web页面的装置200;

用于从所述app应用程序中向所述web页面注入脚本程序的装置210;

用于通过所述脚本程序捕捉所述web页面内的第二操作记录的装置220;以及

用于将所述app应用程序内的第一操作记录与所述第二操作记录结合,以确定用户操作记录的装置230。

示例性设备

在介绍了本发明示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的用于在混合app中确定用户操作记录的装置。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

在一些可能的实施方式中,本发明的装置可以至少包括一个或多个处理器、以及至少一个存储器。其中,所述存储器存储有程序,当所述程序被所述处理器执行时,使得所述处理器执行本说明书中描述各种步骤。

下面参照图3来描述根据本发明的这种实施方式的用于在混合app中确定用户操作记录的装置。图3显示的装置300仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图3所示,用户终端300以通用计算设备的形式表现,包括但不限于:至少一个处理器310、至少一个存储器320、连接不同系统组件的总线360。

总线360表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。

存储器320可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)321和/或高速缓存存储器322,还可以进一步包括只读存储器(rom)323。

存储器320还可以包括程序模块324,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

用户终端300还可以与一个或多个外部设备10(例如键盘、指向设备、蓝牙设备等)通信,也可与一个或者多个其他用户终端进行通信。这种通信可以通过输入/输出(i/o)接口340进行,并在显示单元330上进行显示。并且,用户终端300还可以通过网络适配器350与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器350通过总线360与用户终端300中的其它模块通信。应当明白,尽管图中未示出,但可以结合用户终端300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

示例性程序产品

在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序代码在被处理器执行时,所述程序代码用于使所述处理器执行上面描述的方法。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

如图4所示,描述了根据本发明的实施方式的程序产品400,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

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