掌桥专利:专业的专利平台
掌桥专利
首页

一种跨平台的页面埋点方法、装置、电子设备及存储介质

文献发布时间:2024-04-18 20:00:25


一种跨平台的页面埋点方法、装置、电子设备及存储介质

技术领域

本发明涉及跨平台的页面埋点技术,尤其涉及一种跨平台的页面埋点方法、装置、电子设备及存储介质。

背景技术

在相关技术中,无侵入式数据埋点方案主要包括:在代码运行的生命周期过程中设置各种拦截的钩子函数,并提前配置埋点上报的数据参数。当代码运行到某个声明周期过程,触发提前设置的钩子函数,就可以将配置文件中的埋点参数进行数据上报,但是由于同一业务可能涉及iOS、Android、Web和Flutter等多种平台开发语言的终端设备,因此,需要重复的进行埋点处理,大幅度的提升了跨平台的页面埋点的成本。

发明内容

有鉴于此,本发明实施例提供一种跨平台的页面埋点方法、装置、电子设备及存储介质,可以通过跨端开发框架的界面交互代码,同时对多种平台开发语言的页面进行埋点处理,减少了跨平台的页面埋点的人力成本和硬件成本,有利于自动化跨平台的页面埋点的大规模推广,同时利用埋点指令和埋点参数可以可视化地在页面环境中对埋点业务进行处理,降低了埋点处理的难度,有效提升用户的使用体验。

本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种跨平台的页面埋点方法,所述方法包括:

信息传输模块,用于获取目标客户端中运行跨端开发框架的界面交互代码,其中,所述目标客户端为所述跨端开发框架支持的任意一种开发语言运行的终端设备;

信息处理模块,用于根据所述界面交互代码,生成抽象语法树,并且根据所述抽象语法树生成对应的抽象语法树页面;

所述信息处理模块,用于所述目标客户端触发页面埋点进程,并通过所述页面埋点进程为所述抽象语法树和所述目标客户端的应用程序建立关联关系;

所述信息处理模块,用于在所述应用程序的显示界面中选择需要埋点处理的元素;

所述信息处理模块,用于根据所述要埋点处理的元素,在所述抽象语法树页面中确定抽象语法树的节点;

所述信息处理模块,用于为所述抽象语法树的节点配置埋点指令和埋点参数;

所述信息处理模块,用于根据所述埋点指令和所述埋点参数,对所述需要埋点处理的元素进行埋点处理,并将所述埋点结果通过所述跨端开发框架的界面交互代码同步至不同开发语言的目标客户端中。

本发明实施例还提供了一种跨平台的页面埋点装置,所述装置包括:

信息传输模块,用于获取目标客户端中运行跨端开发框架的界面交互代码,其中,所述目标客户端为所述跨端开发框架支持的任意一种开发语言运行的终端设备;

信息处理模块,用于根据所述界面交互代码,生成抽象语法树,并且根据所述抽象语法树生成对应的抽象语法树页面;

所述信息处理模块,用于所述目标客户端触发页面埋点进程,并通过所述页面埋点进程为所述抽象语法树和所述目标客户端的应用程序建立关联关系;

所述信息处理模块,用于在所述应用程序的显示界面中选择需要埋点处理的元素;

所述信息处理模块,用于根据所述要埋点处理的元素,在所述抽象语法树页面中确定抽象语法树的节点;

所述信息处理模块,用于为所述抽象语法树的节点配置埋点指令和埋点参数;

所述信息处理模块,用于根据所述埋点指令和所述埋点参数,对所述需要埋点处理的元素进行埋点处理,并将所述埋点结果通过所述跨端开发框架的界面交互代码同步至不同开发语言的目标客户端中。

上述方案中,

所述信息处理模块,用于根据所述目标客户端的类型,确定所述界面交互代码的编辑引擎;

所述信息处理模块,用于通过所述编辑引擎对所述界面交互代码进行编辑,得到受限表达性编辑语言的抽象语法树;

所述信息处理模块,用于通过所述编辑引擎,对所述受限表达性编辑语言的抽象语法树进行节点渲染,得到渲染节点树;

所述信息处理模块,用于对所述渲染节点树进行布局渲染,得到抽象语法树页面。

上述方案中,所述信息处理模块,用于所述目标客户端响应于所述页面埋点进程发送的记录开始指令,为所述应用程序配置回调函数;

所述信息处理模块,用于通过所述回调函数,对所述应用程序的显示界面与所述抽象语法树的对应节点进行关联处理;

所述信息处理模块,用于所述页面埋点进程接收所述目标客户端发送的文件更新指令;

所述信息处理模块,用于响应于所述文件更新指令,所述页面埋点进程对所述抽象语法树的结构进行更新,以达到为所述抽象语法树和所述目标客户端的应用程序建立关联关系的效果。

上述方案中,所述信息处理模块,用于根据埋点业务需求,确定埋点指令类型,其中,所述埋点指令类型包括:元素点击埋点和元素曝光埋点;

所述信息处理模块,用于通过所述抽象语法树,确定所述应用程序的显示界面中所有元素分别对应的业务名称和参数取值;

所述信息处理模块,用于将所述业务名称和参数取值写入所述埋点指令类中,得到与业务需求相匹配的埋点参数。

上述方案中,所述信息处理模块,用于通过所述抽象语法树,查找与所述埋点指令和所述埋点参数相对应的界面交互代码;

所述信息处理模块,用于对所述界面交互代码进行修改,得到携带埋点信息的界面交互代码;

所述信息处理模块,用于将所述携带埋点信息的界面交互代码发送至云服务器中。

上述方案中,所述信息处理模块,用于当所述页面埋点进程用于对小程序进程测试时,获取用于登录小程序服务器的虚拟测试账号,并在所述页面埋点的交互界面中呈现所述虚拟测试账号;

所述信息处理模块,用于响应于针对所述虚拟测试账号的选用操作,基于每个被选用的虚拟测试账号登录所述小程序服务器,并在所述交互界面中显示处于登录状态的小程序窗口;

所述信息处理模块,用于响应于针对所述小程序的测试请求,在所述小程序窗口中显示页面埋点方法被执行时所输出的调试信息。

上述方案中,所述信息处理模块,用于当所述埋点处理完成后,获取对目标业务进程通过触发埋点所上报的业务数据;

所述信息处理模块,用于根据所上报的业务数据和相对应的终端标识信息,确定所述业务数据的上报数据源,并将所上报的业务数据保存至相应的流程上报集合;

所述信息处理模块,用于基于所述流程上报集合中的所保存的业务数据,触发相匹配的数据检测进程;

所述信息处理模块,用于通过所述数据检测进程对所述流程上报集合中的所保存的业务数据进行检测,获得相应的业务数据检测结果。

本发明实施例还提供了一种电子设备,其特征在于,所述电子设备包括:

存储器,用于存储可执行指令;

处理器,用于运行所述存储器存储的可执行指令时,实现前序的跨平台的页面埋点方法。

本发明实施例还提供了一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时实现前序的跨平台的页面埋点方法。

本发明实施例具有以下有益效果:

获取目标客户端中运行跨端开发框架的界面交互代码,其中,所述目标客户端为所述跨端开发框架支持的任意一种开发语言运行的终端设备;根据所述界面交互代码,生成抽象语法树,并且根据所述抽象语法树生成对应的抽象语法树页面;所述目标客户端触发页面埋点进程,并通过所述页面埋点进程为所述抽象语法树和所述目标客户端的应用程序建立关联关系;在所述应用程序的显示界面中选择需要埋点处理的元素;根据所述要埋点处理的元素,在所述抽象语法树页面中确定抽象语法树的节点;为所述抽象语法树的节点配置埋点指令和埋点参数;根据所述埋点指令和所述埋点参数,对所述需要埋点处理的元素进行埋点处理,并将所述埋点结果通过所述跨端开发框架的界面交互代码同步至不同开发语言的目标客户端中。由此,通过跨端开发框架的界面交互代码,同时对多种平台开发语言的页面进行埋点处理,减少了跨平台的页面埋点的人力成本和硬件成本,有利于自动化跨平台的页面埋点的大规模推广,同时利用埋点指令和埋点参数可以可视化地在页面环境中对埋点业务进行处理,降低了埋点处理的难度,有效提升用户的使用体验。

附图说明

图1为本发明实施例提供的跨平台的页面埋点方法的使用场景示意图;

图2为本发明实施例提供的电子设备的组成结构示意图;

图3为本发明实施例提供的跨平台的页面埋点方法一个可选的流程示意图;

图4为本发明实施例中跨端开发框架的渲染过程示意图;

图5为本发明实施例中抽象语法树和目标客户端的应用程序建立关联关系的一个示意图;

图6为本发明实施例中抽象语法树和目标客户端的应用程序建立关联关系的一个示意图;

图7为本发明实施例中需要买点处理的元素与抽象语法树的绑定过程示意图;

图8为本发明实施例中元素曝光情况示意图;

图9为本发明实施例中埋点参数的设置过成示意图;

图10为本发明实施例中同步埋点设置界面交互代码文件的过程示意图;

图11为本发明实施例中埋点处理的效果示意图;

图12为本发明实施例提供的跨平台的页面埋点方法一个可选的流程示意图;

图13为本发明实施例提供的跨平台的页面埋点方法一个可选的使用场景示意图;

图14为本发明实施例提供的跨平台的页面埋点方法一个可选的使用场景示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。

1)API:全称Application Programming Interface,可翻译成应用程序接口,是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。

2)SDK:全称Software Development Kit,可翻译成软件开发工具包,是为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合广义上包括辅助开发某一类软件的相关文档、范例和工具的集合。

3)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。

4)小程序(Mini Program),是一种基于面向前端的语言(例如JavaScript)开发的、在超文本标记语言(HTML,Hyper Text Markup Language)页面中实现服务的程序,由客户端(例如浏览器或内嵌浏览器核心的任意客户端)经由网络(如互联网)下载、并在客户端的浏览器环境中解释和执行的软件,节省在客户端中安装的步骤。例如,在社交网络客户端中可以下载、运行用于实现机票购买、乘车码等各种服务的小程序。

5)组件(Component),是小程序的视图的功能模块,也称为前端组件,页面中的按钮、标题、表格、侧边栏、内容和页脚等,组件包括模块化的代码以便于在小程序的不同的页面中重复使用。

6)运行环境,用于解释和执行不同开发语言的代码的引擎,例如对于小程序的运行环境而言,可以是iOS平台的JavaScript Core、安卓平台的X5 JS Core。

7)云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。

8)埋点:一般指动作埋点,是用来记录用户在操作时的一系列行为,也是业务做判断的核心数据依据,如果缺失或者不准确将会给业务带来不可恢复的损失。

9)JavaScript(简称“JS”):一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。

10)Webpack:一个用于现代JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部从一个或多个入口点构建一个依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个bundles,它们均为静态资源,用于展示你的内容。

11)界面交互代码JS-Bundle:webpack最终输出产物,是可以被浏览器认识的,拿来即可直接运行的js文件。Js-bundle的本质是一个立即执行函数,这个函数的输入是依赖拓补图(即,一个js对象),没有输出。内部会按照依赖顺序,依次以eval(code)的形式运行代码。

12)抽象语法树(AST Abstract Syntax Tree):源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。

13)DSL(Domain Specific Language):一种为特定领域设计的,具有受限表达性的编程语言。

14)跨端开发框架Hippy:目标是使开发者可以只写一套代码就直接运行于四个平台(iOS、Android、Web和Flutter)。Hippy的设计是面向传统Web开发者的,特别是之前有过React Native和Vue的开发者用起来会更为顺手,Hippy致力于让前端开发跨端App更加容易。

15)V8:一款主流的JS执行引擎,采用及时编译,所以速度很快。V8使用C++开发,并在谷歌浏览器中使用。在运行JavaScript之前,相比其它的JavaScript的引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32,x86-64,ARM,or MIPS CPUs),并且使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序在V8引擎下的运行速度媲美二进制程序。

16)JS-Core:与V8一样,也是一款主流的JS执行引擎,与V8的区别点,JS-Core在IOS手机或者Mac环境运行。

在介绍本申请提供的跨平台的页面埋点方法之前,首先对相关技术中跨平台的页面埋点的处理过程进行说明,目前主流的无侵入式数据埋点方案:在代码运行的生命周期过程中设置各种拦截的钩子函数,并提前配置埋点上报的数据参数。当代码运行到某个声明周期过程,触发提前设置的钩子函数,就可以将配置文件中的埋点参数进行数据上报,但是这种方式的缺陷包括:1)同一业务需求的iOS、Android、Web和Flutter4种平台的开发语言,相同UI的业务页面,需要重复开发四次埋点处理的业务逻辑,人力成本高,同时埋点处理的效率低,错误率高,大幅度的提升了跨平台的页面埋点的成本。2)配置埋点参数时,无法在可视化的页面中进行埋点处理,提升的埋点处理的困难,不利于降低埋点处理的难度。3)埋点参数无法动态获取到页面的业务参数,只能埋一些通用的配置参数,无法适应多种复杂需求的埋点业务,影响了用户的使用需求。

图1为本发明实施例提供的跨平台的页面埋点方法的使用场景示意图,参见图1,终端(包括终端10-1和终端10-2)上设置有能够执行不同功能相应客户端其中,所属客户端为终端(包括终端10-1和终端10-2)通过网络300从相应的服务器200中利用不同的业务进程获取不同的网页进行浏览,终端通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线链路实现数据传输,其中,终端(包括终端10-1和终端10-2)通过网络300从相应的服务器200中所获取的网页类型并不相同,例如:终端(包括终端10-1和终端10-2)既可以通过网络300从相应的服务器200中获取视频网页(即网页中携带视频信息或相应的视频链接),也可以通过网络300从相应的服务器200中获取仅包括文字或图像的相应网页进行浏览。服务器200中可以保存有不同类型的网页。在本发明的一些实施例中,服务器200中所保存的不同类型的网页可以是在不同编程语言的软件代码中所编写的,代码对象可以是不同类型的代码实体。例如,在C语言的软件代码中,一个代码对象可以是一个函数。在JAVA语言的软件代码中,一个代码对象可以是一个类,IOS端OC语言中可以是一段目标代码。在C++语言的软件代码中,一个代码对象可以是一个类或一个函数。其中本申请中不再对不同类型的网页的1编译环境进行区分。

服务器200所运行的不同的业务进程可以利用埋点,通过网络300向终端(终端10-1和/或终端10-2)发送业务数据,以便于对业务进程的运行状态进行检测,其中,作为一个事例,终端10-1可以为安卓语言开发的浏览器终端10-2可以为iOS语言开发的浏览器,在进行埋点时,可以通过跨端开发框架的界面交互代码,仅进行一次埋点处理,即可实现不同平台中的浏览器页面实现埋点。

下面对本发明实施例的电子设备的结构做详细说明,电子设备可以各种形式来实施,如带有跨平台的页面埋点功能的专用终端例如网关,也可以为带有跨平台的页面埋点功能的服务器,例如前述图1中的服务器200。图2为本发明实施例提供的电子设备的组成结构示意图,可以理解,图2仅仅示出了服务器的示例性结构而非全部结构,根据需要可以实施图2示出的部分结构或全部结构。

本发明实施例提供的服务器包括:至少一个处理器201、存储器202、用户接口203和至少一个网络接口204。电子设备20中的各个组件通过总线系统205耦合在一起。可以理解,总线系统205用于实现这些组件之间的连接通信。总线系统205除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统205。

其中,用户接口203可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。

可以理解,存储器202可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。本发明实施例中的存储器202能够存储数据以支持终端(如10-1)的操作。这些数据的示例包括:用于在终端(如10-1)上操作的任何计算机程序,如操作系统和应用程序。其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序可以包含各种应用程序。

在一些实施例中,本发明实施例提供的跨平台的页面埋点装置可以采用软硬件结合的方式实现,作为示例,本发明实施例提供的跨平台的页面埋点装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的跨平台的页面埋点方法。例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。

作为本发明实施例提供的跨平台的页面埋点装置采用软硬件结合实施的示例,本发明实施例所提供的跨平台的页面埋点装置可以直接体现为由处理器201执行的软件模块组合,软件模块可以位于存储介质中,存储介质位于存储器202,处理器201读取存储器202中软件模块包括的可执行指令,结合必要的硬件(例如,包括处理器201以及连接到总线205的其他组件)完成本发明实施例提供的跨平台的页面埋点方法。

作为示例,处理器201可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

作为本发明实施例提供的跨平台的页面埋点装置采用硬件实施的示例,本发明实施例所提供的装置可以直接采用硬件译码处理器形式的处理器201来执行完成,例如,被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件执行实现本发明实施例提供的跨平台的页面埋点方法。

本发明实施例中的存储器202用于存储各种类型的数据以支持电子设备20的操作。这些数据的示例包括:用于在电子设备20上操作的任何可执行指令,如可执行指令,实现本发明实施例的从跨平台的页面埋点方法的程序可以包含在可执行指令中。

在另一些实施例中,本发明实施例提供的跨平台的页面埋点装置可以采用软件方式实现,图2示出了存储在存储器202中的跨平台的页面埋点装置2020,其可以是程序和插件等形式的软件,并包括一系列的模块,作为存储器202中存储的程序的示例,可以包括跨平台的页面埋点装置2020,跨平台的页面埋点装置2020中包括以下的软件模块信息传输模块2081以及信息处理模块2082。当跨平台的页面埋点装置2020中的软件模块被处理器201读取到RAM中并执行时,将实现本发明实施例提供的跨平台的页面埋点方法,下面对跨平台的页面埋点装置2020中各个软件模块的功能进行介绍:

信息传输模块2081,用于获取目标客户端中运行跨端开发框架的界面交互代码,其中,所述目标客户端为所述跨端开发框架支持的任意一种开发语言运行的终端设备。

信息处理模块2082,用于根据所述界面交互代码,生成抽象语法树,并且根据所述抽象语法树生成对应的抽象语法树页面。

所述信息处理模块2082,用于所述目标客户端触发页面埋点进程,并通过所述页面埋点进程为所述抽象语法树和所述目标客户端的应用程序建立关联关系。

所述信息处理模块2082,用于在所述应用程序的显示界面中选择需要埋点处理的元素。

所述信息处理模块2082,用于根据所述要埋点处理的元素,在所述抽象语法树页面中确定抽象语法树的节点。

所述信息处理模块2082,用于为所述抽象语法树的节点配置埋点指令和埋点参数。

所述信息处理模块2082,用于根据所述埋点指令和所述埋点参数,对所述需要埋点处理的元素进行埋点处理,并将所述埋点结果通过所述跨端开发框架的界面交互代码同步至不同开发语言的目标客户端中。

根据图2所示的电子设备,在本申请的一个方面中,本申请还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述跨平台的页面埋点方法的各种可选实现方式中所提供的不同实施例及实施例的组合。

本发明实施例中的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。

在本发明的一些实施例中,终端110、流量端120、多媒体信息系统130和分布式云存储系统140均可以为区块链系统中的节点设备,能够将获取到以及生成的信息共享给区块链系统中的其他节点设备,实现多个节点设备之间的信息共享。

本发明实施例还可以基于云技术来实现多媒体信息的曝光控制。云技术(Cloudtechnology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利,云计算技术将变成重要支撑。云计算(cloud computing)指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Gri d Computing)、分布式计算(DistributedComputing)、并行计算(ParallelComputing)、效用计算(Utility Computing)、网络存储(NetworkStorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。

云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。

结合图2示出的电子设备20说明本发明实施例提供的跨平台的页面埋点方法,参见图3,图3为本发明实施例提供的跨平台的页面埋点方法一个可选的流程示意图,可以理解地,图3所示的步骤可以由运行跨平台的页面埋点装置的各种服务器执行,例如可以是如带有跨平台的页面埋点功能的服务器或者服务器集群。下面针对图3示出的步骤进行说明。

步骤301:跨平台的页面埋点装置获取目标客户端中运行跨端开发框架的界面交互代码。

其中,所述目标客户端为所述跨端开发框架支持的任意一种开发语言运行的终端设备。跨端开发框架Hippy,可以使开发者可以只写一套代码就直接运行于至少三种开发语言的平台(iOS、Android和Web)。Hippy的设计是面向传统Web开发者的,使得开发跨端App更加容易。

步骤302:跨平台的页面埋点装置根据所述界面交互代码,生成抽象语法树,并且根据所述抽象语法树生成对应的抽象语法树页面。

利用Hippy框架,在前端编写完的界面交互代码JS-Bundle能够在各种不同的开发语言运行的终端设备中解析成同一套DSL配置语法树,然后再利用每一类型终端的特性渲染出相同的UI界面。

参考图4,图4为本发明实施例中跨端开发框架的渲染过程示意图,在本发明的一些实施例中,根据所述抽象语法树生成对应的抽象语法树页面,可以通过以下方式实现:根据所述目标客户端的类型,确定所述界面交互代码的编辑引擎;通过所述编辑引擎对所述界面交互代码进行编辑,得到受限表达性编辑语言的抽象语法树;通过所述编辑引擎,对所述受限表达性编辑语言的抽象语法树进行节点渲染,得到渲染节点树;对所述渲染节点树进行布局渲染,得到抽象语法树页面。其中如图4所示,界面交互代码在Hippy框架中,当界面交互代码如运行在Chrome浏览器、安卓手机或者Windows系统环境,可以使用V8引擎,解析成DSL配置的抽象语法树。同样的,当界面交互代码如运行在Safari浏览器、IOS手机或者Mac系统环境,则使用JS-Core引擎,将界面交互代码解析成DSL配置的抽象语法树。在对应的引擎实时解析界面交互代码获取到抽象语法树后,每一类型的终端设备都可以根据所在的环境,再生成渲染节点树,进行布局渲染,呈现出一样的UI页面。

步骤303:跨平台的页面埋点装置目标客户端触发页面埋点进程,并通过页面埋点进程为抽象语法树和目标客户端的应用程序建立关联关系。

在本发明的一些实施例中,为抽象语法树和目标客户端的应用程序建立关联关系,可以通过以下方式实现:

目标客户端响应于页面埋点进程发送的记录开始指令,为应用程序配置回调函数;通过回调函数,对应用程序的显示界面与抽象语法树的对应节点进行关联处理;页面埋点进程接收目标客户端发送的文件更新指令;响应于文件更新指令,页面埋点进程对抽象语法树的结构进行更新,最终建立关联关系。其中,参考图5,图5为本发明实施例中抽象语法树和目标客户端的应用程序建立关联关系的一个示意图,由于一个完整应用程序的显示界面包括了至少一帧页面图像,因此与运行的客户端建立通讯的通道后,页面埋点进程向客户端发送自定义的记录开始指令(start Screencast指令),运行的客户端收到此指令后,在页面UI刷新的回调钩子函数中可以绑定索要页面图像的回调函数。当客户端的页面发生刷新时,就会触发绑定的函数,函数就会获取页面渲染根节点的信息,然后转换成页面的base64格式的图像,通过自定义的screencast Frame指令,传送图像给页面埋点进程,显示当前运行的客户端页面。同时页面埋点进程会再发送自定义的screencast FrameAck指令给客户端,继续获取下一帧的页面图像,直至完成一个完整应用程序的显示界面包括的所有页面图像的关联关系建立。

参考图6,图6为本发明实施例中抽象语法树和目标客户端的应用程序建立关联关系的一个示意图,除了客户端的应用进程的界面会同步到页面埋点进程,抽象语法树也会同步到页面埋点进程。当客户端对应的抽象语法树发生变化时,会向页面埋点进程发送自定义的文件更新指令(documentUpdate),接收到此指令后,页面埋点进程向客户端发送自定义的getDocument指令,获取到当前客户端运行的DSL AST,自此完成同步更新DSL AST的流程。

步骤304:跨平台的页面埋点装置在应用程序的显示界面中选择需要埋点处理的元素。

其中,可以根据不同的埋点业务需求,在应用程序的显示界面中选择至少一个需要埋点处理的元素。

步骤305:跨平台的页面埋点装置根据要埋点处理的元素,在抽象语法树页面中确定抽象语法树的节点。

参考图7,图7为本发明实施例中需要买点处理的元素与抽象语法树的绑定过程示意图,其中,图7中阴影部分所示的“Voltron Vue”为用户选中的需要进行埋点处理的元素,当用户选中应用程序的显示界面中所呈现的“Voltron Vue”这个元素时,会触发对应的距离计算页面,此时,“Voltron Vue”在距离计算页面中处于点击点Point,点击点Point在距离计算页面的坐标是(x,y),距离应用程序的显示界面的上边界和左边界的距离分别是top和left。在抽象语法树的结构中,每一个节点Node在应用程序的显示界面上渲染出来的上边界(top`)、左边界(left`),宽度(width`)以及高度(height`)。当点击点Point满足以下公式1,可以选择元素在节点所在的子树中。

确定选择需要埋点处理的元素所在的子树后,元素与子树中深度最大(Depthmax),且面积最小(Areamin=width`*height`)的第一个元素进行绑定关联关系。如图7所示,文本元素与受限表达性编辑语言的抽象语法树右下角的Text节点(虚线节点)双向绑定,由此,页面元素与受限表达性编辑语言的抽象语法树上的所有节点双向绑定完成。

步骤306:跨平台的页面埋点装置为抽象语法树的节点配置埋点指令和埋点参数。

步骤307:跨平台的页面埋点装置根据埋点指令和埋点参数,对需要埋点处理的元素进行埋点处理,并将埋点结果通过跨端开发框架的界面交互代码同步至不同开发语言的目标客户端中。

在本发明的一些实施例中,为抽象语法树的节点配置埋点指令和埋点参数,可以通过以下方式实现:

根据埋点业务需求,确定埋点指令类型,其中,所述埋点指令类型包括:元素点击埋点和元素曝光埋点;通过抽象语法树,确定应用程序的显示界面中所有元素分别对应的业务名称和参数取值;将业务名称和参数取值写入埋点指令类中,得到与业务需求相匹配的埋点参数。

下面分别本申请所提供的对埋点指令和埋点参数进行说明,参考图8,图8为本发明实施例中元素曝光情况示意图,其中,埋点指令这里提供了两种指令:元素点击埋点和元素曝光埋点。元素点击埋点是检测到页面元素被点击时,就会触发上报埋点的逻辑。元素曝光埋点是检测到页面元素被曝光时,触发的上报埋点逻辑,页面曝光,其中,结合图7以及公式1,页面元素满足公式2,则此元素满足曝光逻辑触发的条件,可以进行元素曝光埋点。

visibleWidth*visibleHeight≥width*height/2公式2

参考图9,图9为本发明实施例中埋点参数的设置过成示意图,其中,通过受限表达性编辑语言的抽象语法树,能够获取当前页面所有业务参数的名称和对应的值,如图9所示,通过受限表达性编辑语言的抽象语法树,获取到变量的名称‘userId’,作为埋点参数的标识符,写入埋点指令的逻辑中。当触发埋点指令的逻辑时,再通过标识符‘userId’在受限表达性编辑语言的抽象语法树上找到对应的值‘5201314’,进行埋点参数上报。

由于跨端开发框架支持多种开发语言的平台,同时通过本申请提供的方法,希望对iOS、Android、Web和Flutter等多种平台开发语言的终端设备仅进行一次埋点处理,即可实现多种平台开发语言的页面进行埋点处理,减少了跨平台的页面埋点的人力成本和硬件成本,因此,可以通过抽象语法树,查找与埋点指令和所述埋点参数相对应的界面交互代码;对界面交互代码进行修改,得到携带埋点信息的界面交互代码;将携带埋点信息的界面交互代码发送至云服务器中,以供不同平台的终端设备进行下载更新。参考图10,图10为本发明实施例中同步埋点设置界面交互代码文件的过程示意图,其中,设置完相关的埋点指令和参数后,通过受限表达性编辑语言的抽象语法树,找到对应界面交互代码中节点代码的row(行)和column(列)所在的位置,进行埋点相关参数的插桩工作,自动修改原来的界面交互代码。修改完成后,页面埋点进程自动将新的JS-Bundle上传到云端,供其它各端下载解析渲染。

为了更好地说明本申请提供的跨平台的页面埋点方法的工作过程,下面以即时通讯客户端的小程序组件的埋点过程,对本申请提供的跨平台的页面埋点方法进行说明,参考图11,图11为本发明实施例中埋点处理的效果示意图,页面埋点进程用于对小程序进程测试时,获取用于登录小程序服务器的虚拟测试账号,并在页面埋点的交互界面中呈现所述虚拟测试账号;响应于针对所述虚拟测试账号的选用操作,基于每个被选用的虚拟测试账号登录所述小程序服务器,并在所述交互界面中显示处于登录状态的小程序窗口;响应于针对所述小程序的测试请求,在所述小程序窗口中显示页面埋点方法被执行时所输出的调试信息。其中,如图11所示,在交互界面中呈现自动化测试状态组件,可以实现通过自动化测试状态组件响应于针对小程序的测试请求;在交互界面中呈现登录状态组件,可以控制测试人员的登录、注销以及通过目标验证方式对登录信息进行检测;通过图11所示的Web可视化界面进行远程管理。Web界面中呈现有“运行测试”按钮,测试人员点击按钮,即可向开发机发送指令,控制开发机进行运行测试、登录开发者工具、开启测试结果通知等操作。通过触发图11中的登录状态组件,可通过二维码验证方式对埋点信息进行查看,避免遗漏需要埋点的元素。

图12为本发明实施例提供的跨平台的页面埋点方法一个可选的流程示意图,具体包括以下步骤:

步骤1201:选定客户端,运行Hippy的js-bundle文件,根据js-bundle实时生成DSL配置的抽象语法树,并渲染出对应页面。

步骤1202:客户端连接页面埋点进程。

步骤1203:通过页面埋点进程同步客户端正在运行的应用界面,并与DSL配置的抽象语法树自动建立关联关系。

图13为本发明实施例提供的跨平台的页面埋点方法一个可选的使用场景示意图,其中,为了简化埋点操作的难度,通过使用本申请提供的跨平台的页面埋点方法,用户通过操控光标移到元素“Voltron Vue”,点击左键就可以选中页面的这个元素,同时DSL配置的语法树上也可以关联选中这一个节点。然后在最右侧,可以选中埋点的指令类型(如点击埋点和曝光埋点等)。同时页面运行的业务参数也可以提供给用户进行选择配置。最后点击“保存同步埋点配置”,生成相关关联配置并同步上传,供其它客户端使用,完成整个埋点流程。降低了埋点处理的难度,有效提升用户的使用体验。

步骤1204:选择页面上需要埋点的元素。

步骤1205:通过页面埋点进程根据选择页面的元素进行埋点,选择后,装置会自动定位到抽象语法树上的节点,并提供埋点的指令和参数选择。

步骤1206:配置选择元素的埋点指令和参数,并同步上传,完成埋点处理。

在本发明的一些实施例中,当埋点处理完成后,可以获取对目标业务进程通过触发埋点所上报的业务数据;根据所上报的业务数据和相对应的终端标识信息,确定业务数据的上报数据源,并将所上报的业务数据保存至相应的流程上报集合;基于流程上报集合中的所保存的业务数据,触发相匹配的数据检测进程;通过数据检测进程对所述流程上报集合中的所保存的业务数据进行检测,获得相应的业务数据检测结果。图14为本发明实施例提供的跨平台的页面埋点方法一个可选的使用场景示意图,其中,在一些实施例中,操作人员可以根据需要分析的待埋点网页的需求,设定特定时长;比如,设定特定时长为1天或者1周等;在一个具体例子中,设定特定时长为1天,获取一天中,每一目标功能节点的埋点数据,形成埋点数据集合;如图14所示,在浏览器网页61中,获取腾X视频601、高清影视602、腾X新闻603、地图604和QQ邮箱605等,在一天中的埋点数据,例如,埋点数据为浏览量,则获取腾X视频601、高清影视602、腾X新闻603、地图604和QQ邮箱605,在一天中的用户点击次数。

为了保证埋点统计的用户点击次数的准确性,可以通过协议字段检测进程,对流程上报集合中的所保存的业务数据的字段信息进行检测;通过准确性检测进程,基于匹配规则,对流程上报集合中的所保存的业务数据的准确性进行检测;通过多报时序检测进程,对流程上报集合中的所保存的业务数据的数目参数和时序信息分别进行检测。其中,参协议字段校验进程需要先制定上报数据每个字段的校验规则,包括但不限于:字段类型限定、字段枚举限定和字段范围限定,确保上报数据不同字段的有效性,并作为第一层校验方式。

本发明具有以下有益技术效果:

本发明实施例通过跨端开发框架的界面交互代码,同时对多种平台开发语言的页面进行埋点处理,减少了跨平台的页面埋点的人力成本和硬件成本,有利于自动化跨平台的页面埋点的大规模推广,同时利用埋点指令和埋点参数可以可视化地在页面环境中对埋点业务进行处理,降低了埋点处理的难度,有效提升用户的使用体验。

以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种生物力学用便于安装外设具有整理线缆功能的主机放置架
  • 一种带包装线缆及其线缆包装组件
  • 一种便于安装的陶棍幕墙的安装结构及安装方法
  • 一种便于拆换内芯的综合布线缆装置
  • 一种便于更换电池的防撞抗压车位锁
  • 一种便于安装的抗压海底线缆包装管
  • 一种便于安装的抗压海底线缆包装管
技术分类

06120116532896