CN112306723A - 一种应用于小程序的运行信息获取方法和装置 - Google Patents

一种应用于小程序的运行信息获取方法和装置 Download PDF

Info

Publication number
CN112306723A
CN112306723A CN201910695924.0A CN201910695924A CN112306723A CN 112306723 A CN112306723 A CN 112306723A CN 201910695924 A CN201910695924 A CN 201910695924A CN 112306723 A CN112306723 A CN 112306723A
Authority
CN
China
Prior art keywords
applet
running
function
information
small program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910695924.0A
Other languages
English (en)
Other versions
CN112306723B (zh
Inventor
迟潇潇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201910695924.0A priority Critical patent/CN112306723B/zh
Publication of CN112306723A publication Critical patent/CN112306723A/zh
Application granted granted Critical
Publication of CN112306723B publication Critical patent/CN112306723B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种应用于小程序的运行信息获取方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;分析所述小程序运行函数的特征,添加与所述特征相应的代码至所述运行函数中,得到第一运行函数;在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息。该实施方式通过劫持小程序原App和Page方法,并***获取运行信息代码,以获取小程序运行过程中的运行信息,当后续出现小程序运行异常的情况时,便于后续开发人员基于这些运行信息进行问题复现。

Description

一种应用于小程序的运行信息获取方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用于小程序的运行信息获取方法和装置。
背景技术
小程序的开发厂商不同导致各小程序实际运行环境的不同。由于小程序本身的设计、代码的规范、业务本身的逻辑或网络状态的原因,经常会出现运行异常情况。对于一般的异常,可能对整个***的执行影响较小,但对于某些特殊场合,例如首页等重要页面打不开,就会造成较大的影响。
通常这些异常在测试阶段很难发现,需要在实际使用中由用户来反馈,例如“打开白屏”、“点xx按钮没有反应”、“进不去xx页面”等,开发人员需根据用户所反馈的异常信息分析小程序运行异常的原因。
然而这些异常发生的时间是随机的,可能出现开发人员检查时却发现小程序是可以正常运行的现象。此时需要开发人员查询用户的手机型号、网络状态、程序版本等信息来复现用户所遇到的问题,整体费时费力且得到的结果不一定准确。
针对该问题,最理想的方式就是有一个自动监控***,可以捕获小程序运行过程中所遇到的异常及相关异常数据,方便开发人员准确进行问题复现。现有小程序内使用的异常监控方式主要有:
1)依赖第三方平台(例如微信、百度、支付宝、字节跳动等)提供的管理后台,查看管理后台所捕获到的与各小程序相关的异常数据;
2)预先在可能出现异常的位置***异常捕获代码,例如使用try catch方式进行异常捕获,然后调用后台接口上报异常数据。
在实现本发明的过程中,发明人发现现有技术至少存在如下问题:
1)异常数据存储在第三方平台的服务端中,并没有存储在开发某个小程序的开发者的服务端中:
①后续查看异常数据需按照第三方平台设置的规则进行,存在获取不易的问题;
②第三方平台的服务端中可能仅展示了部分异常数据,一些异常数据并没有对外展示,导致复现小程序运行异常所需的数据不全、复现困难的问题;
2)对于异常捕获代码添加方式:
①异常位置需要预估,存在代码***异常或者遗漏的情况,达不到异常完全捕获的效果;
②在业务逻辑中***异常捕获代码,会污染现有业务逻辑,导致后续代码更新和维护困难。
发明内容
有鉴于此,本发明实施例提供一种应用于小程序的运行信息获取方法和装置,至少能够解决现有技术中与异常有关的信息获取不易的问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种应用于小程序的运行信息获取方法,包括:
在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;
分析所述小程序运行函数的特征,添加与所述特征相应的代码至所述运行函数中,得到第一运行函数;
在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息。
可选的,所述运行函数包括第一生命周期函数,所述第一生命周期函数为所述小程序初始化阶段中的第一个生命周期函数;
所述添加与所述特征相应的代码至所述运行函数中,得到第一运行函数,还包括:添加获取配置信息代码至所述第一生命周期函数中,得到第二生命周期函数;
在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息之前,还包括:通过所述第二生命周期函数,获取与所述小程序的标识相应的配置信息。
可选的,所述通过所述第一运行函数,获取所述小程序的运行信息之后,还包括:按照对运行函数的执行顺序,按序排列所获取的运行信息,以生成对所述小程序的运行记录。
可选的,在所述获取所述小程序的运行信息之后,还包括:若监听到所述小程序运行异常,则触发异常监听函数进行异常信息捕获,之后将所捕获的异常信息和所述运行信息进行上传。
可选的,所述将所捕获的异常信息和所述运行信息进行上传,包括:读取与所述小程序的标识相应的服务地址,传输所述异常信息和所述运行信息至所述服务地址中。
为实现上述目的,根据本发明实施例的另一方面,提供了一种应用于小程序的运行信息获取装置,包括:
函数劫持模块,用于在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;
代码添加模块,用于分析所述小程序运行函数的特征,添加与所述特征相应的代码至所述运行函数中,得到第一运行函数;
信息获取模块,用于在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息。
可选的,所述运行函数包括第一生命周期函数,所述第一生命周期函数为所述小程序初始化阶段中的第一个生命周期函数;
所述代码添加模块,还用于:添加获取配置信息代码至所述第一生命周期函数中,得到第二生命周期函数;通过所述第二生命周期函数,获取与所述小程序的标识相应的配置信息。
可选的,所述信息获取模块,还用于:按照对运行函数的执行顺序,按序排列所获取的运行信息,以生成对所述小程序的运行记录。
可选的,还包括异常监控模块,用于:若监听到所述小程序运行异常,则触发异常监听函数进行异常信息捕获,之后将所捕获的异常信息和所述运行信息进行上传。
可选的,所述异常监控模块,用于:读取与所述小程序的标识相应的服务地址,传输所述异常信息和所述运行信息至所述服务地址中。
为实现上述目的,根据本发明实施例的再一方面,提供了一种应用于小程序的运行信息获取电子设备。
本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的应用于小程序的运行信息获取方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的应用于小程序的运行信息获取方法。
根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:通过劫持小程序原App和Page方法,并***获取运行信息代码,以获取小程序运行过程中的运行信息,当后续出现小程序运行异常的情况时,便于后续开发人员基于这些运行信息进行问题复现。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种应用于小程序的运行信息获取方法的主要流程示意图;
图2是根据本发明实施例的一种可选的应用于小程序的运行信息获取方法的流程示意图;
图3是根据本发明实施例的另一种可选的应用于小程序的运行信息获取方法的流程示意图;
图4是根据本发明实施例的又一种可选的应用于小程序的运行信息获取方法的流程示意图;
图5是本发明实施例提供的开发者工具中显示的报错信息代码示意图;
图6是本发明实施例提供的将异常信息和运行信息拼接为json数据的代码示意图;
图7是根据本发明实施例的一具体地应用于小程序的运行信息获取方法的流程示意图;
图8是根据本发明实施例的一种应用于小程序的运行信息获取装置的主要模块示意图;
图9是本发明实施例可以应用于其中的示例性***架构图;
图10是适于用来实现本发明实施例的移动设备或服务端的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要说明的是,本发明实施例所涉及的小程序,是指微信、百度、字节跳动、QQ浏览器、支付宝等第三方平台中的小程序,而非操作***中的应用程序(不同应用程序所嵌入的脚本和生命周期设计都不同)。本发明主要以微信中的小程序为例进行具体说明。
参见图1,示出的是本发明实施例提供的一种应用于小程序的运行信息获取方法的主要流程图,包括如下步骤:
S101:在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;
S102:分析所述小程序运行函数的特征,添加与所述特征相应的代码至所述运行函数中,得到第一运行函数;
S103:在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息。
对于用户在使用小程序过程中所出现的问题,通常是用户偶然进行到某一步时候出现的。但对于后续开发人员进行的问题复现,是需要重复用户所操作的所有步骤的,因此,本发明主要考虑如何获取用户操作小程序的具体信息。
小程序的运行是按照生命周期执行的,因此一定会进入生命周期的回调函数。本发明选择在小程序初始化阶段,向小程序每个生命周期函数中注入相应代码,以获取用户在每个生命周期中对小程序的操作信息,即小程序响应于用户操作的运行信息。
上述实施方式中,对于步骤S101,对于微信小程序,其生命周期函数有2个:
1)App的生命周期,包括onLaunch、onShow、onHide三个生命周期回调函数和onError异常监听函数;其中,生命周期函数是相应实例在某个时间点会自动执行的函数,通常在使用之前已全部定义好,且调用顺序和开发人员在代码里面的书写顺序无关;其中,App用来描述整个应用;
2)Page的生命周期,包括onLoad、onReady、onShow、onHide、onUnload五个生命周期回调函数和事件处理函数;其中,Page代表应用的一个页面,负责页面展示和交互。
APP的生命周期和页面Page的生命周期是相互交叉的,虽page生命周期无onError函数,但可以依赖onError函数进行异常信息监控。
对于步骤S102,所添加的代码可以是“获取运行信息”代码,用于在小程序在运行过程中,获取其所经历的各个生命周期中的运行信息。
小程序不同生命周期中的运行函数具有不同的特征,因此所获取的运行信息也不相同,因此,虽都是用以获取运行信息的代码,但针对不同生命周期中的运行函数,可以添加不同格式、数值等特征的代码,得到添加代码后的第一运行函数。
例如,onLaunch用于监听小程序初始化,因此可以添加与该特征相对应的代码1,以在该阶段可以获取小程序的配置信息,具体参见后续图2描述。onShow用于在小程序启动或从后台进入至前台时触发,因此可以添加与该特征相对应的代码2,以解读小程序切换是否正常信息。
需要说明的是,onError函数主要用于监控小程序在各个生命周期的运行过程,是异常发生时候触发的。onError函数通常不会出现运行异常的情况,因此,本发明可以选择不在该函数中添加代码,此时除了onError函数之外的生命周期函数、事件处理函数统称为运行函数。但若在onError函数中添加了代码,此时包括onError的所有生命周期函数,称为运行函数。
对于第一运行函数,是将原代码与所添加的代码进行合并得到的。例如引入SDK(Software Development Kit,软件开发工具包)的小程序在初始化onLaunch时添加了代码以获取用户的登录信息,但若不合并,那SDK中的onLaunch函数将覆盖引入方的onLaunch函数,导致影响原有的业务逻辑。
进一步的,为不影响小程序原始代码的执行逻辑,需保存原始小程序的APP和Page方法,并将这些方法赋值给originApp(原始应用程序)变量。这样信息变更时候整个程序的代码不会发生变化,仅获取当前函数触发时的信息状态即可。
对于步骤S103,通过对小程序每个运行函数中添加代码,可以获取用户对小程序运行函数的执行顺序、***信息、地理位置和网络信息等运行信息。
可以创建一个对象,用以保存这些运行信息,包括当前时间、当前方法名、页面路径、页面参数、场景编号、方法来源(用from字段区分App和Page中的同名方法,例如都有onShow方法,App中的方法from:‘App’,page中的from:‘page’)。
小程序运行到该运行函数时,将该对象放入thread数组中,最终所得数组中包含了用户对运行函数的执行顺序以及小程序响应用户操作所运行的信息。
进一步的,这里的thread数组,通常是在小程序启动过程中创建的,用以记录小程序实际的运行过程。在初始阶段,该数组为空。
另外,用户对运行函数具有一定的操作顺序,针对该顺序,可以对运行信息进行排序,以生成与该用户关联的运行记录,便于后续操作人员按照该运行记录进行问题复现。
例如,用户操作有A、B、C、B四个步骤,但在重复B步骤时候出现bug,开发人员需要按照该顺序进行问题重现,以分析重复步骤B时候的运行异常原因。
上述实施例所提供的方法,通过对小程序的运行函数进行代码添加操作,便于在小程序运行过程中实时记录运行信息,为后续开发人员进行问题复现提供了信息基础;且使用时仅需将SDK文件复制到小程序项目中,在逻辑层App Service(使用JavaScript引擎为小程序提供开发者JavaScript代码的运行环境以及小程序的特有功能)中引入该文件并配置参数,无需添加其他代码,不会对小程序的原代码造成污染,便于后期代码的更新和维护。
参见图2,示出了根据本发明实施例的一种可选的应用于小程序的运行信息获取方法流程示意图,包括如下步骤:
S201:在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;其中,所述运行函数包括onLaunch、onShow、onHide三个生命周期函数;
S202:添加获取配置信息代码和获取运行信息代码至onLaunch生命周期函数中、以及分别添加获取运行信息代码至onShow、onHide两个生命周期函数中;
S203:通过添加代码后的onLaunch生命周期函数,获取与所述小程序的标识相应的配置信息、以及小程序在onLaunch生命周期中的运行信息;
S204:分别通过添加代码后的onShow、onHide两个生命周期函数,获取小程序在相应生命周期中的运行信息;
S205:按照对运行函数的执行顺序,按序排列所获取的运行信息,以生成对所述小程序的运行记录。
上述实施方式中,对于步骤S205可参见图1所示步骤S103的描述,在此不再赘述。
上述实施方式中,对于步骤S201,小程序的运行环境分为渲染层和逻辑层。
每个小程序都需要在逻辑层App Service中调用App方法注册小程序示例,接受一个Object参数,以绑定生命周期回调函数、异常监听和页面不存在监听函数等。
表1 Object参数说明
Figure BDA0002149359420000101
整个小程序只有一个App实例,是全部页面共享的。开发者可以通过getApp()方法获取到全局唯一的App示例,获取App上的数据或调用开发者注册在App上的函数。
对于步骤S202和S203,根据表1可知,onLaunch主要用于监听小程序的初始化。
对于App方法Object参数中的onLaunch生命周期回调函数,通过读取配置表config,可以得到字段为true的相应配置信息;例如***信息、地理位置、网络环境、小程序唯一标识、用户唯一标识等。
对于地理位置信息,有些业务场景是按照地理位置进行区分的。例如xx小程序,北京站和上海站的商家不同,北京站的X地区和Y地区的商家也是不同的,有些业务逻辑只有北京站才可触发,而有些逻辑只有上海站才会触发,通过地理位置可以方便排查该类信息。
除了上述信息外,配置信息还可以包括小程序所处第三方平台的版本信息,例如微信版本号,在微信版本更新后,若再次打开小程序,所获取到的是更新后的版本号。
所得到的配置信息可以存储到本地对应字段中,如***数据systemInfo、地理位置数据locationInfo,便于后续读取。
对于步骤S203和S204,小程序每个生命周期中都可能出现运行异常的情况,例如初始化阶段的***bug、从前台切换到后台时的bug。
因此App中onLaunch、onShow、onHide这三个生命周期函数中都需要添加获取运行信息代码,以得到小程序运行到当前函数时的信息状态;例如小程序中程序的执行顺序、***信息、异常信息、地理位置和网络信息等。
上述实施例所提供的方法,针对小程序App方法,除了添加获取运行信息代码之外,还可以添加获取配置信息代码,以得到***信息、地理位置、网络环境、小程序唯一标识、用户唯一标识等信息,结合运行信息,为后续开发人员进行问题复现提供了数据基础。
参见图3,示出了根据本发明实施例的另一种可选的应用于小程序的运行信息获取方法流程示意图,包括如下步骤:
S301:在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;其中,运行函数包括onLoad、onReady、onShow、onHide、onUnload五个生命周期回调和事件处理函数;
S302:添加与获取运行信息代码至所述运行函数中,得到第一运行函数;
S303:在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息;
S304:按照对运行函数的执行顺序,按序排列所获取的运行信息,以生成对所述小程序的运行记录。
上述实施方式中,对于步骤S304可参见图1所示步骤S103的描述,在此不再赘述。
上述实施方式中,对于步骤S301,对于小程序中的每个页面,都需要在页面对应的JavaScript文件中调用Page方法注册页面示例。
表2 Page参数
属性 描述
data 页面的初始数据
onLoad 生命周期函数--监听页面加载
onReady 生命周期函数--监听页面初次渲染完成
onShow 生命周期函数--监听页面显示
onHide 生命周期函数--监听页面隐藏
onUnload 生命周期函数--监听页面卸载
onPullDownRefresh 页面相关事件处理函数--监听用户下拉动作
onReachBottom 页面上拉触底事件的处理函数
对于步骤S302,为不影响原始代码执行逻辑,需保存原始Page方法,将原始的Page方法赋值给originPage变量。在每一个函数中***获取运行信息代码,将添加完代码的Object参数,传递给originPage方法,完成Page中获取程序执行顺序代码的***。
对于步骤S303,用Page方法注册小程序中的页面,接受一个Object参数,指定页面的初始数据、生命周期回调、事件处理函数等。劫持Page Object参数传递的方法,记录小程序的运行过程。
同图1和图2所示,可以创建一个对象保存当前页面运行过程的基本信息,包括:当前时间、当前函数名、当前页面路径、当前页面参数、场景编号、方法来源。
将上述对象放入thread数组中,便于后续问题复现。也可以按照对运行函数的执行顺序,对所得运行信息进行排序组合。
上述实施例所提供的方法,针对于小程序页面,通过添加获取运行信息代码至运行函数中,可以得到用户操作小程序页面时的运行记录,为后续问题复现提供了数据基础。
参见图4,示出了根据本发明实施例的又一种可选的应用于小程序的运行信息获取方法流程示意图,包括如下步骤:
S401:在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;
S402:添加与获取运行信息代码至所述运行函数中,得到第一运行函数;
S403:在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息;
S404:按照对运行函数的执行顺序,按序排列所获取的运行信息,以生成对所述小程序的运行记录;
S405:若监听到所述小程序运行异常,则触发异常监听函数进行异常信息捕获;
S406:读取与所述小程序的标识相应的服务地址,传输所述异常信息和所述运行记录至所述服务地址中。
上述实施方式中,对于步骤S401~S404可参见图1~图3所示描述,在此不再赘述。
上述实施方式中,对于步骤S405,当小程序发生脚本异常或者API(ApplicationProgramming Interface,应用程序编程接口)调入失败的时候会触发onError函数。
在App Object参数中的onError方法中捕获异常,将所获取到的异常信息存储在本地的error字段中。这里的异常信息可以包括:程序自身报错提示、异常发生时间、异常发生所在页面和异常发生所在页面参数。
例如,调用未声明变量的属性,导致报错:
Figure BDA0002149359420000131
开发者工具中显示的报错信息,参见图5所示。
页面无onError函数,只记录小程序的运行顺序。鉴于App的生命周期和页面的生命周期是相互交叉的,例如,写在pages字段的第一个页面就是这个小程序的首页,即打开小程序所看到的第一个页面。因此,可以通过App中的onError进行异常监控操作。
对于步骤S406,读取config中配置的服务端地址config.serverUrl,以添加上报所有信息(异常信息、运行信息、配置信息等)至服务端地址,例如,开发者(和第三方平台)服务端地址。
为便于后续处理,可以将所获取到的所有信息拼接成json格式数据,然后通过post请求将其发送至服务端config.serverUrl中,具体参见图6所示。
所获取的信息不能独立于代码之外,需将这些信息以变量形式进行存储。本发明选择将这些数据转换为json格式数据,并最终合并成一个json对象发送给服务端地址,整体可以基于javascript语言实现。
另外,这些信息可以以SDK的形式提供装置供接入者使用,使用时引入该文件,添加config配置即可。
上述实施例所提供的方法,当小程序运行中出现异常情况时,可以触发异常信息捕获操作;考虑小程序开发者需对小程序改进的思路,所捕获的异常信息以及记录用户操作的运行记录,在发送至小程序平台管理后台的同时,也可以发送给小程序开发者的服务端地址,以减少小程序开发者与小程序平台之间的交流。
参见图7,示出了根据本发明实施例的一具体地应用于小程序的运行信息获取方法流程示意图,包括如下步骤:
S701:在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;其中,运行函数包括注册小程序中的onLaunch、onShow、onHide三个生命周期回调函数,以及小程序页面中的onLoad、onReady、onShow、onHide、onUnload五个生命周期回调和事件处理函数;
S702:添加获取配置信息代码和获取运行信息代码至onLaunch生命周期函数中,以及添加获取运行信息代码至其余函数中;
S703:通过添加代码后的onLaunch,读取小程序的配置表,得到所述小程序的配置信息;
S704:通过添加代码后的onLaunch、onShow、onHide三个生命周期回调函数,分别获取小程序运行过程中的运行信息;
S705:添加获取运行信息代码至onLoad、onReady、onShow、onHide、onUnload五个生命周期回调和事件处理函数中;
S706:通过添加代码后的onLoad、onReady、onShow、onHide、onUnload五个生命周期回调和事件处理函数,获取小程序页面运行过程中的运行信息;
S707:按照对运行函数的执行顺序,按序排列所获取的运行信息,以生成对所述小程序的运行记录;
S708:若监听到所述小程序运行异常,则触发异常监听函数进行异常信息捕获;
S709:读取与所述小程序的标识相应的服务地址,传输所述异常信息和所述运行记录至所述服务地址中。
这里对SDK进行补充,在小程序逻辑层App Service文件中引入SDK,importerrorReport from‘./errorReport.js’。
在App Service中配置config参数。现可配参数包含如下字段,但不局限于下述字段,后续可继续扩展。配置示例:
errorReport.config={
serverUrl:'https://m.jd.com/errorReport'
net:true,//为true的可不传
location:false,
systemInfo:false,
appid:true,
openid:true,
secrect:'ahskldkjf133'
}
表3配置信息示例
Figure BDA0002149359420000161
本发明实施例所提供的方法,相比现有技术具有以下有益效果:
1)通过劫持小程序原App和Page方法,并在App方法参数中的onLauch、onShow、onHide和Page方法参数的函数中***获取运行信息代码,以获取小程序运行过程中的运行信息;
2)对于小程序app方法,还可以在初始化过程中添加获取配置信息代码至onLaunch函数中,得到小程序运行时的配置信息;
3)基于上述1)和2),当后续出现小程序运行异常的情况时,便于开发人员基于这些运行信息进行问题复现;
4)通过onError函数监听小程序运行过程中的异常,实现异常捕获100%,且无需埋点;
5)第三方平台通常不会处理小程序的异常问题,通常需要小程序开发者进行问题修复,因此将所得到的异常信息、小程序运行信息和配置信息传输至小程序的服务端中,也便于开发人员获取与小程序异常有关的所有信息;
6)使用时仅需将SDK文件复制到小程序项目中,在逻辑层AppService中引入该文件并配置参数,无需添加其他代码,不会对小程序的原代码造成污染,便于后期代码的更新和维护。
参见图8,示出了本发明实施例提供的一种应用于小程序的运行信息获取装置800的主要模块示意图,包括:
函数劫持模块801,用于在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;
代码添加模块802,用于分析所述小程序运行函数的特征,添加与所述特征相应的代码至所述运行函数中,得到第一运行函数;
信息获取模块803,用于在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息。
本发明实施装置中,所述运行函数包括第一生命周期函数,所述第一生命周期函数为所述小程序初始化阶段中的第一个生命周期函数;
所述代码添加模块802,还用于:添加获取配置信息代码至所述第一生命周期函数中,得到第二生命周期函数;通过所述第二生命周期函数,获取与所述小程序的标识相应的配置信息。
本发明实施装置中,所述信息获取模块803,还用于:按照对运行函数的执行顺序,按序排列所获取的运行信息,以生成对所述小程序的运行记录。
本发明实施装置还包括异常监控模块804(图中未标出),用于:若监听到所述小程序运行异常,则触发异常监听函数进行异常信息捕获,之后将所捕获的异常信息和所述运行信息进行上传。
本发明实施装置中,所述异常监控模块804,用于:读取与所述小程序的标识相应的服务地址,传输所述异常信息和所述运行信息至所述服务地址中。
另外,在本发明实施例中所述装置的具体实施内容,在上面所述方法中已经详细说明了,故在此重复内容不再说明。
图9示出了可以应用本发明实施例的示例性***架构900。
如图9所示,***架构900可以包括终端设备901、902、903,网络904和服务器905(仅仅是示例)。网络904用以在终端设备901、902、903和服务器905之间提供通信链路的介质。网络904可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备901、902、903通过网络904与服务器905交互,以接收或发送消息等。终端设备901、902、903上可以安装有各种通讯客户端应用。
终端设备901、902、903可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器905可以是提供各种服务的服务器,例如对用户利用终端设备901、902、903所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的应用于小程序的运行信息获取方法一般由服务器905执行,相应地,应用于小程序的运行信息获取装置一般设置于服务器905中。
应该理解,图9中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图10,其示出了适于用来实现本发明实施例的终端设备的计算机***1000的结构示意图。图10示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,计算机***1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有***1000操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(CPU)1001执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括函数劫持模块、代码添加模块、信息获取模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,信息获取模块还可以被描述为“小程序运行信息获取模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;
分析所述小程序运行函数的特征,添加与所述特征相应的代码至所述运行函数中,得到第一运行函数;
在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息。
根据本发明实施例的技术方案,相对于现有技术具有以下有益效果:
1)通过劫持小程序原App和Page方法,并***获取运行信息代码,以获取小程序运行过程中的运行信息;
2)对于小程序app方法,还可以在初始化过程中添加获取配置信息代码至onLaunch函数中,得到小程序运行时的配置信息;
3)基于上述1)和2),当后续出现小程序运行异常的情况时,便于开发人员基于这些运行信息进行问题复现;
4)通过onError函数监听小程序运行过程中的异常,实现异常捕获100%,且无需埋点;
5)第三方平台通常不会处理小程序的异常问题,通常需要小程序开发者进行问题修复,因此将所得到的异常信息、小程序运行信息和配置信息传输至小程序的服务端中,也便于开发人员获取与小程序异常有关的所有信息;
6)使用时仅需将SDK文件复制到小程序项目中,在逻辑层App Service中引入该文件并配置参数,无需添加其他代码,不会对小程序的原代码造成污染,便于后期代码的更新和维护。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (8)

1.一种应用于小程序的运行信息获取方法,其特征在于,包括:
在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;
分析所述小程序运行函数的特征,添加与所述特征相应的代码至所述运行函数中,得到第一运行函数;
在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息。
2.根据权利要求1所述的方法,其特征在于,所述运行函数包括第一生命周期函数,所述第一生命周期函数为所述小程序初始化阶段中的第一个生命周期函数;
所述添加与所述特征相应的代码至所述运行函数中,得到第一运行函数,还包括:
添加获取配置信息代码至所述第一生命周期函数中,得到第二生命周期函数;
在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息之前,还包括:
通过所述第二生命周期函数,获取与所述小程序的标识相应的配置信息。
3.根据权利要求1所述的方法,其特征在于,所述通过所述第一运行函数,获取所述小程序的运行信息之后,还包括:
按照对运行函数的执行顺序,按序排列所获取的运行信息,以生成对所述小程序的运行记录。
4.根据权利要求1或3所述的方法,其特征在于,在所述获取所述小程序的运行信息之后,还包括:
若监听到所述小程序运行异常,则触发异常监听函数进行异常信息捕获,之后将所捕获的异常信息和所述运行信息进行上传。
5.根据权利要求4所述的方法,其特征在于,所述将所捕获的异常信息和所述运行信息进行上传,包括:
读取与所述小程序的标识相应的服务地址,传输所述异常信息和所述运行信息至所述服务地址中。
6.一种应用于小程序的运行信息获取装置,其特征在于,包括:
函数劫持模块,用于在初始化小程序的过程中,根据所述小程序的标识,确定所述小程序的运行函数并劫持;
代码添加模块,用于分析所述小程序运行函数的特征,添加与所述特征相应的代码至所述运行函数中,得到第一运行函数;
信息获取模块,用于在所述小程序的运行过程中,通过所述第一运行函数,获取所述小程序的运行信息。
7.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
8.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201910695924.0A 2019-07-30 2019-07-30 一种应用于小程序的运行信息获取方法和装置 Active CN112306723B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910695924.0A CN112306723B (zh) 2019-07-30 2019-07-30 一种应用于小程序的运行信息获取方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910695924.0A CN112306723B (zh) 2019-07-30 2019-07-30 一种应用于小程序的运行信息获取方法和装置

Publications (2)

Publication Number Publication Date
CN112306723A true CN112306723A (zh) 2021-02-02
CN112306723B CN112306723B (zh) 2024-06-18

Family

ID=74485214

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910695924.0A Active CN112306723B (zh) 2019-07-30 2019-07-30 一种应用于小程序的运行信息获取方法和装置

Country Status (1)

Country Link
CN (1) CN112306723B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338813A (zh) * 2022-01-07 2022-04-12 挂号网(杭州)科技有限公司 网络请求的展示方法及装置、电子设备、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101515248A (zh) * 2008-02-21 2009-08-26 国际商业机器公司 面向对象程序的跟踪方法和***
US20140380282A1 (en) * 2013-06-20 2014-12-25 Microsoft Corporation Monitoring mobile application performance
CN106778235A (zh) * 2016-11-24 2017-05-31 北京瑞星信息技术股份有限公司 Linux文件操作控制方法及装置
CN109388537A (zh) * 2018-08-31 2019-02-26 阿里巴巴集团控股有限公司 运行信息跟踪方法、装置及计算机可读存储介质
CN109976973A (zh) * 2019-02-19 2019-07-05 深圳点猫科技有限公司 一种小程序线上异常监控方法及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101515248A (zh) * 2008-02-21 2009-08-26 国际商业机器公司 面向对象程序的跟踪方法和***
US20140380282A1 (en) * 2013-06-20 2014-12-25 Microsoft Corporation Monitoring mobile application performance
CN106778235A (zh) * 2016-11-24 2017-05-31 北京瑞星信息技术股份有限公司 Linux文件操作控制方法及装置
CN109388537A (zh) * 2018-08-31 2019-02-26 阿里巴巴集团控股有限公司 运行信息跟踪方法、装置及计算机可读存储介质
CN109976973A (zh) * 2019-02-19 2019-07-05 深圳点猫科技有限公司 一种小程序线上异常监控方法及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338813A (zh) * 2022-01-07 2022-04-12 挂号网(杭州)科技有限公司 网络请求的展示方法及装置、电子设备、存储介质
CN114338813B (zh) * 2022-01-07 2023-12-01 挂号网(杭州)科技有限公司 网络请求的展示方法及装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN112306723B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
WO2020181839A1 (zh) 页面数据测试方法、装置、计算机设备和存储介质
CN107644075B (zh) 收集页面信息的方法和装置
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
CN110688305B (zh) 测试环境同步方法、装置、介质、电子设备
CN112241362A (zh) 一种测试方法、装置、服务器及存储介质
CN114328250A (zh) 软件***自动自检方法、介质和装置
CN108228611B (zh) 单据信息抄写方法和装置
CN112306723A (zh) 一种应用于小程序的运行信息获取方法和装置
CN112965910B (zh) 自动化回归测试方法、装置、电子设备、存储介质
CN114356290A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN110489341B (zh) 一种测试方法、装置、存储介质及电子设备
CN114428815A (zh) 数据存储方法、装置、电子设备和计算机可读介质
CN113110846A (zh) 一种环境变量的获取方法及装置
CN117130945B (zh) 一种测试方法和装置
CN113760723B (zh) 一种业务流程调试方法和装置
CN111026466A (zh) 文件处理方法、装置、计算机可读存储介质及电子设备
CN112261072A (zh) 一种服务调用方法、装置、设备和存储介质
CN111740876B (zh) 一种应用装置、测试方法、存储介质及电子设备
CN117762812A (zh) 一种处理日志信息的方法和装置
CN117472428A (zh) 内网app控制方法、电子设备及存储介质
CN115203056A (zh) Sdk测试方法、介质及装置
CN115098394A (zh) 一种测试方法、装置、电子设备及计算机可读介质
CN113778729A (zh) 异常信息的确定方法、装置、电子设备和存储介质
CN114996135A (zh) 基于旁路引流的接口测试方法、装置、设备和存储介质
CN112084115A (zh) 软件缺陷的流程化操作方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant