本发明涉及计算机信息处理领域,具体而言,涉及一种在客户端应用采集用户行为信息的方法、装置和系统。
背景技术:
随着4g网络的普及,移动互联网逐渐变成人们生活中不可或缺的一部分。互联网产品的应用、性能和管理成为企业提升用户体验的关键,也是一个企业长久发展的必要因素。例如:程序崩溃或者程序卡顿,将会影响多少体验用户,进而受影响的体验用户流失会给企业造成多少损失,这些都是企业所要考虑的问题。
目前现有技术中通常采用埋点技术采集用户行为信息,统计特定页面的曝光量、访问次数、访问时间、功能按钮点击量等数据,然后将数据上传到服务器进行数据分析,来检验应用效果是否达到产品运营的预期。
但现有的技术中,对于多个页面的应用,每个页面都需要单独运行一次打点策略,导致应用中引入了大量重复的打点策略,造成资源浪费。而且通常点击事件的业务请求是一个接口,点击事件的打点统计是另一个接口,上传时请求接口的数量较多,资源占用严重。
技术实现要素:
本发明旨在解决现有的埋点技术程序运行工作量大,资源消耗严重,需要在页面资源加载完成后,代码运行时执行,会有一定延迟的问题。
为了解决上述技术问题,本发明第一方面提出一种用于采集用户行为信息的方法,包括:
在应用的所有页面注册打点逻辑;
对用户的打开和关闭的点击行为进行统计,生成打点数据;
将打点逻辑封装进业务请求接口中,通过业务请求接口上传所述打点数据。
根据本发明的一种优选实施方式,在应用的所有页面注册打点逻辑为:在应用的路由的全局钩子函数中加载打点逻辑的初始化代码。
根据本发明的一种优选实施方式,对用户的打开和关闭的点击行为进行统计具体为:在进入页面和离开页面的两个节点的钩子函数中加载打点逻辑。
根据本发明的一种优选实施方式,生成打点数据为:采集点击相关的参数,将所述参数封装成打点数据,所述参数包括点击事件的类型、名称、来源和数据。
根据本发明的一种优选实施方式,所述应用为基于html5和javascript技术实现的应用。
根据本发明的一种优选实施方式,通过业务请求接口上传所述打点数据之前还包括:对所述打点数据进行加密处理。
根据本发明的一种优选实施方式,通过业务请求接口上传所述打点数据之后还包括:判断上传是否成功,如果上传成功则删除本地存储的加密后的打点数据,如果上传失败,每隔一定时间后再次进行上传。
本发明的第二方面提出一种在客户端应用采集用户行为信息的装置,包括:
注册模块,用于在应用的所有页面注册打点逻辑;
统计模块,用于对用户的打开和关闭的点击行为进行统计,生成打点数据;
上传模块,用于将打点逻辑封装进业务请求接口中,通过业务请求接口上传所述打点数据。
根据本发明的一种优选实施方式,在应用的所有页面注册打点逻辑为:在应用的路由的全局钩子函数中加载打点逻辑的初始化代码。
根据本发明的一种优选实施方式,对用户的打开和关闭的点击行为进行统计具体为:在进入页面和离开页面的两个节点的钩子函数中加载打点逻辑。
根据本发明的一种优选实施方式,生成打点数据为:采集点击相关的参数,将所述参数封装成打点数据,所述参数包括点击事件的类型、名称、来源和数据。
根据本发明的一种优选实施方式,所述应用为基于html5和javascript技术实现的应用。
根据本发明的一种优选实施方式,通过业务请求接口上传所述打点数据之前还包括:对所述打点数据进行加密处理。
根据本发明的一种优选实施方式,通过业务请求接口上传所述打点数据之后还包括:判断上传是否成功,如果上传成功则删除本地存储的加密后的打点数据,如果上传失败,每隔一定时间后再次进行上传。
本发明的第三方面提出一种在客户端应用采集用户行为信息的系统,包括:
存储单元,用于存储计算机可执行程序;
处理单元,用于读取所述存储单元中的计算机可执行程序,以执行所述的在客户端应用采集用户行为信息的方法。
本发明的第四方面提出一种计算机可读介质,用于存储计算机可读程序,其特征在于,所述计算机可读程序用于执行所述的在客户端应用采集用户行为信息的方法。
采用该技术方案,在初始化整个应用的时候,所有页面都注册了打点,避免每个页面都需要引入打点策略,造成资源浪费的问题,将业务请求和打点统计的接口统一,避免请求接口数量较多,资源浪费严重的问题。
附图说明
为了使本发明所解决的技术问题、采用的技术手段及取得的技术效果更加清楚,下面将参照附图详细描述本发明的具体实施例。但需声明的是,下面描述的附图仅仅是本发明的示例性实施例的附图,对于本领域的技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他实施例的附图。
图1是本发明实施例中一种在客户端应用采集用户行为信息的方法的流程示意图;
图2是本发明实施例中一种在客户端应用采集用户行为信息的装置的结构示意图;
图3是本发明实施例中一种在客户端应用采集用户行为信息的系统的结构框架示意图;
图4是本发明实施例中计算机可读存储介质的结构示意图。
具体实施方式
现在将参考附图来更加全面地描述本发明的示例性实施例,虽然各示例性实施例能够以多种具体的方式实施,但不应理解为本发明仅限于在此阐述的实施例。相反,提供这些示例性实施例是为了使本发明的内容更加完整,更加便于将发明构思全面地传达给本领域的技术人员。
在符合本发明的技术构思的前提下,在某个特定的实施例中描述的结构、性能、效果或者其他特征可以以任何合适的方式结合到一个或更多其他的实施例中。
在对于具体实施例的介绍过程中,对结构、性能、效果或者其他特征的细节描述是为了使本领域的技术人员对实施例能够充分理解。但是,并不排除本领域技术人员可以在特定情况下,以不含有上述结构、性能、效果或者其他特征的技术方案来实施本发明。
附图中的流程图仅是一种示例性的流程演示,不代表本发明的方案中必须包括流程图中的所有的内容、操作和步骤,也不代表必须按照图中所显示的的顺序执行。例如,流程图中有的操作/步骤可以分解,有的操作/步骤可以合并或部分合并,等等,在不脱离本发明的发明主旨的情况下,流程图中显示的执行顺序可以根据实际情况改变。
附图中的框图一般表示的是功能实体,并不一定必然与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理单元装置和/或微控制器装置中实现这些功能实体。
各附图中相同的附图标记表示相同或类似的元件、组件或部分,因而下文中可能省略了对相同或类似的元件、组件或部分的重复描述。还应理解,虽然本文中可能使用第一、第二、第三等表示编号的定语来描述各种器件、元件、组件或部分,但是这些器件、元件、组件或部分不应受这些定语的限制。也就是说,这些定语仅是用来将一者与另一者区分。例如,第一器件亦可称为第二器件,但不偏离本发明实质的技术方案。此外,术语“和/或”、“及/或”是指包括所列出项目中的任一个或多个的所有组合。
图1是本发明一种在客户端应用采集用户行为信息的方法的流程图,如图1所示,方法包括:
s101、在应用的所有页面注册打点逻辑。
在上述技术方案的基础上,进一步地,在应用的所有页面注册打点逻辑为:在应用的路由的全局钩子函数中加载打点逻辑的初始化代码。
在本实施方式中,应用在运行过程中,会向用户展示不同的页面,各个页面展示应用不同的功能和信息。应用在展示信息的时候实现与用户的交互。在应用的页面存在一些供用户点击的按钮图标,每个按钮图标在后台与一个控件相对应,当用户点击按钮图标后,控件执行相应的功能。
在本实施方式中,以vue应用为例,在入口js文件中,在路由的beforeeach钩子函数中加入打点逻辑的初始化代码,在应用进行初始化的时候,所有页面都注册了打点逻辑。在所有页面都注册了打点逻辑后,打点逻辑会对用户的点击行为进行监控,即当用户点击页面的中的按钮图标后,按钮对应的控件会执行相应的功能,打点逻辑会对用户的点击行为进行统计。
s102、对用户的打开和关闭的点击行为进行统计,生成打点数据。
在上述技术方案的基础上,进一步地,对用户的打开和关闭的点击行为进行统计具体为:在进入页面和离开页面的两个节点的钩子函数中加载打点逻辑。
在本实施方式中,还是以vue应用为例,在beforerouterenter和beforerouteleave两个节点的钩子函数中加入统计逻辑。这样就能监控到用户打开、关闭页面的行为。采用这种方式,当用户点击按钮后,控件执行相应的功能打开某个页面,或者用户点击按钮后,控件执行相应的功能关闭某个页面的行为都会被打点逻辑统计。
在上述技术方案的基础上,进一步地,采集点击相关的参数,将所述参数封装成打点数据,所述参数包括点击事件的类型、名称、来源和数据。
在本实施方式中,用户点击按钮,控件执行相应的操作,打点逻辑采集用户每一次的点击的相关的参数,具体的参数包括点击事件的类型,比如打开、关闭;点击事件的名称;点击事件的来源,比如点击那个页面的那个按钮;点击事件的数据,比如点击发生的时间,用户在页面的浏览时间等等。打点逻辑将采集到的相关的参数进行保存,封装成打点数据。
通过打点逻辑对用户的点击事件进行采集和统计,后续可以用于对用户的行为进行分析,了解应用的使用情况,做出针对性的改进和调整。
s103、将打点逻辑封装进业务请求接口中,通过业务请求接口上传所述打点数据。
为了避免用户点击按钮后,业务请求调用一次接口,打点逻辑上传打点数据再调用一次接口这种频繁调用接口,浪费系统资源的问题。在本实施方式中,将打点逻辑封装进业务请求接口的构造函数中,当用户点击按钮后,与按钮对应的控件执行相应的功能,打点逻辑采集用户每一次的点击的相关的参数。根据相关参数生成打点数据,在调用业务请求接口时,自动将打点数据连同业务请求一起传输出去。减少了接口请求数量,减轻了系统负担,避免了资源的浪费。
在本实施方式中,所有的点击事件都封装进业务请求接口的构造函数中,统一走业务请求的接口。不同的点击事件采集的相关的参数不同,通过参数来区分不同的点击事件。
在上述技术方案的基础上,进一步地,通过业务请求接口上传所述打点数据之前还包括:对所述打点数据进行加密处理。
在本实施方式中,为了避免数据传输中出现安全问题,导致数据泄露,被第三方获取导致用户隐私泄露。因此在打点数据传输之前先进行加密,可以采用对称秘钥或非对称秘钥的方式进行加密。对称秘钥加密算法包括des、3des、aes、sm4等,非对称秘钥算法包括rsa、dsa、elgamal等。
在上述技术方案的基础上,进一步地,通过业务请求接口上传所述打点数据之后还包括:判断上传是否成功,如果上传成功则删除本地存储的加密后的打点数据,如果上传失败,每隔一定时间后再次进行上传。
在本实施方式中,为了避免在传输过程中数据丢失,在上传完成之后进行数据校验,判断上传的数据与本地保存的数据是否一致,数据校验可以采用md5、crc、lrc等算法进行数据校验,如果校验后数据一致说明上传成功,可以将本地保存的打点数据删除。如果校验后数据不一致,书名上传不成功,本地保存的打点数据不删除,隔一段时间后再次进行上传和校验,直到上传成功为止。
在上述技术方案的基础上,进一步地,所述应用为基于html5和javascript技术实现的应用。
如图2所示,在本实施例中还提供了一种在客户端应用采集用户行为信息的装置200,装置200包括:
注册模块201,用于在应用的所有页面注册打点逻辑。
在上述技术方案的基础上,进一步地,在应用的所有页面注册打点逻辑为:在应用的路由的全局钩子函数中加载打点逻辑的初始化代码。
在本实施方式中,应用在运行过程中,会向用户展示不同的页面,各个页面展示应用不同的功能和信息。应用在展示信息的时候实现与用户的交互。在应用的页面存在一些供用户点击的按钮图标,每个按钮图标在后台与一个控件相对应,当用户点击按钮图标后,控件执行相应的功能。
在本实施方式中,以vue应用为例,在入口js文件中,在路由的beforeeach钩子函数中加入打点逻辑的初始化代码,在应用进行初始化的时候,所有页面都注册了打点逻辑。在所有页面都注册了打点逻辑后,打点逻辑会对用户的点击行为进行监控,即当用户点击页面的中的按钮图标后,按钮对应的控件会执行相应的功能,打点逻辑会对用户的点击行为进行统计。
统计模块202,用于对用户的打开和关闭的点击行为进行统计,生成打点数据。
在上述技术方案的基础上,进一步地,对用户的打开和关闭的点击行为进行统计具体为:在进入页面和离开页面的两个节点的钩子函数中加载打点逻辑。
在本实施方式中,还是以vue应用为例,在beforerouterenter和beforerouteleave两个节点的钩子函数中加入统计逻辑。这样就能监控到用户打开、关闭页面的行为。采用这种方式,当用户点击按钮后,控件执行相应的功能打开某个页面,或者用户点击按钮后,控件执行相应的功能关闭某个页面的行为都会被打点逻辑统计。
在上述技术方案的基础上,进一步地,采集点击相关的参数,将所述参数封装成打点数据,所述参数包括点击事件的类型、名称、来源和数据。
在本实施方式中,用户点击按钮,控件执行相应的操作,打点逻辑采集用户每一次的点击的相关的参数,具体的参数包括点击事件的类型,比如打开、关闭;点击事件的名称;点击事件的来源,比如点击那个页面的那个按钮;点击事件的数据,比如点击发生的时间,用户在页面的浏览时间等等。打点逻辑将采集到的相关的参数进行保存,封装成打点数据。
通过打点逻辑对用户的点击事件进行采集和统计,后续可以用于对用户的行为进行分析,了解应用的使用情况,做出针对性的改进和调整。
上传模块203,用于将打点逻辑封装进业务请求接口中,通过业务请求接口上传所述打点数据。
为了避免用户点击按钮后,业务请求调用一次接口,打点逻辑上传打点数据再调用一次接口这种频繁调用接口,浪费系统资源的问题。在本实施方式中,将打点逻辑封装进业务请求接口的构造函数中,当用户点击按钮后,与按钮对应的控件执行相应的功能,打点逻辑采集用户每一次的点击的相关的参数。根据相关参数生成打点数据,在调用业务请求接口时,自动将打点数据连同业务请求一起传输出去。减少了接口请求数量,减轻了系统负担,避免了资源的浪费。
在本实施方式中,所有的点击事件都封装进业务请求接口的构造函数中,统一走业务请求的接口。不同的点击事件采集的相关的参数不同,通过参数来区分不同的点击事件。
在上述技术方案的基础上,进一步地,通过业务请求接口上传所述打点数据之前还包括:对所述打点数据进行加密处理。
在本实施方式中,为了避免数据传输中出现安全问题,导致数据泄露,被第三方获取导致用户隐私泄露。因此在打点数据传输之前先进行加密,可以采用对称秘钥或非对称秘钥的方式进行加密。对称秘钥加密算法包括des、3des、aes、sm4等,非对称秘钥算法包括rsa、dsa、elgamal等。
在上述技术方案的基础上,进一步地,通过业务请求接口上传所述打点数据之后还包括:判断上传是否成功,如果上传成功则删除本地存储的加密后的打点数据,如果上传失败,每隔一定时间后再次进行上传。
在本实施方式中,为了避免在传输过程中数据丢失,在上传完成之后进行数据校验,判断上传的数据与本地保存的数据是否一致,数据校验可以采用md5、crc、lrc等算法进行数据校验,如果校验后数据一致说明上传成功,可以将本地保存的打点数据删除。如果校验后数据不一致,书名上传不成功,本地保存的打点数据不删除,隔一段时间后再次进行上传和校验,直到上传成功为止。
在上述技术方案的基础上,进一步地,所述应用为基于html5和javascript技术实现的应用。
如图3所示,本发明的一个实施例中还公开一种在客户端应用采集用户行为信息的系统,图3显示的信息处理系统仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
一种在客户端应用采集用户行为信息的系统300,包括存储单元320,用于存储计算机可执行程序;处理单元310,用于读取所述存储单元中的计算机可执行程序,以执行本发明各种实施方式的步骤。
在本实施方式中一种在客户端应用采集用户行为信息的系统300还包括,连接不同系统组件(包括存储单元320和处理单元310)的总线330、显示单元340等。
其中,所述存储单元320存储有计算机可读程序,其可以是源程序或都只读程序的代码。所述程序可以被处理单元310执行,使得所述处理单元310执行本发明各种实施方式的步骤。例如,所述处理单元310可以执行如图1所示的步骤。
所述存储单元320可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)3201和/或高速缓存存储单元3202,还可以进一步包括只读存储单元(rom)3203。所述存储单元320还可以包括具有一组(至少一个)程序模块3205的程序/实用工具3204,这样的程序模块3205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线330可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
一种在客户端应用采集用户行为信息的系统300也可以与一个或多个外部设备370(例如键盘、显示器、网络设备、蓝牙设备等)通信,使得用户能经由这些外部设备370通过输入/输出(i/o)接口350进行与处理单元310进行交互,还可以通过网络适配器360与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)进行。网络适配器360可以通过总线330与在客户端应用采集用户行为信息的系统300的其它模块通信。应当明白,尽管图中未示出,在客户端应用采集用户行为信息的系统300中可使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
图4是本发明的一个计算机可读介质实施例的示意图。如图4所示,所述计算机程序可以存储于一个或多个计算机可读介质上。计算机可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储单元(ram)、只读存储单元(rom)、可擦式可编程只读存储单元(eprom或闪存)、光纤、便携式紧凑盘只读存储单元(cd-rom)、光存储单元件、磁存储单元件、或者上述的任意合适的组合。当所述计算机程序被一个或多个数据处理设备执行时,使得该计算机可读介质能够实现本发明的上述方法,即:
s1、在应用的所有页面注册打点逻辑;
s2、对用户的打开和关闭的点击行为进行统计,生成打点数据;
s3、将打点逻辑封装进业务请求接口中,通过业务请求接口上传所述打点数据。
通过以上的实施方式的描述,本领域的技术人员易于理解,本发明描述的示例性实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读的存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台数据处理设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明的上述方法。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
综上所述,本发明可以执行计算机程序的方法、装置、电子设备或计算机可读介质来实现。可以在实践中使用微处理单元或者数字信号处理单元(dsp)等通用数据处理设备来实现本发明的一些或者全部功能。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,本发明不与任何特定计算机、虚拟装置或者电子设备固有相关,各种通用装置也可以实现本发明。以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。