一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种埋点数据生成方法、装置、设备及存储介质与流程

2021-11-03 14:30:00 来源:中国专利 TAG:
1.本发明涉及数据采集
技术领域
:,更具体地说,涉及一种埋点数据生成方法、装置、设备及存储介质。
背景技术
::2.埋点又可以称为事件跟踪,指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。通过在产品中加入埋点,可以获取用户在使用该产品的过程中所产生的埋点数据,将产生的埋点数据传入统一数据库,并对数据库中的埋点数据进行分析处理,以便对产品进行优化。3.目前进行埋点时,主要采用手动埋点方式,也即:对数据分析时所需要获取数据的位置添加埋点,以便获取相关数据进行后续的数据分析。但是,由于该埋点方式需要手动添加,并且只在需要的位置添加,就会出现血缘关系残缺,造成用户链路不完整的问题,从而无法分析用户行为,产品优化时缺少数据参考支撑。技术实现要素:4.本发明的目的在于提供一种埋点数据生成方法、装置、设备及存储介质,以避免生成的埋点数据中血缘关系残缺,造成用户链路不完整。5.为实现上述目的,本发明提供一种埋点数据生成方法,包括:6.若监测到用户在第一页面触发了点击事件,则在响应所述点击事件之前,生成所述第一页面的标识,所述标识为所述第一页面的to值;7.响应所述点击事件跳转至第二页面,获取所述标识,将所述标识作为所述第二页面的from值,并与所述第二页面进行绑定;8.根据每个页面的from值及to值生成埋点数据。9.其中,所述生成所述第一页面的标识,包括:10.生成32位随机数,将所述32位随机数作为所述第一页面的标识;其中,不同页面的不同点击事件生成的标识互不相同。11.其中,若当前操作系统为ios操作系统,则埋点数据生成方法还包括:12.在应用程序启动时,将业务代码中的原代码与目标代码进行交换,以便通过所述目标代码在响应所述点击事件之前生成所述第一页面的标识;13.其中,所述原代码为触发所述点击事件之后需要执行的原生系统函数;所述目标代码包括所述原生系统函数及埋点标识生成方法。14.其中,所述原代码中的函数为:uicollectionview、uitableview、uicontrol、uiviewcontroller中至少一者中的函数。15.为实现上述目的,本发明进一步提供一种埋点数据生成装置,包括:16.标识生成模块,用于监测到用户在第一页面触发了点击事件时,在响应所述点击事件之前生成所述第一页面的标识,所述标识为所述第一页面的to值;17.响应模块,用于响应所述点击事件跳转至第二页面;18.绑定模块,用于获取所述标识,将所述标识作为所述第二页面的from值,并与所述第二页面进行绑定;19.数据生成模块,用于根据每个页面的from值及to值生成埋点数据。20.其中,所述标识生成模块具体用于:生成32位随机数,将所述32位随机数作为所述第一页面的标识;其中,不同页面的不同点击事件生成的标识互不相同。21.其中,所述埋点数据生成装置还包括交换模块;22.所述交换模块用于在当前操作系统为ios操作系统,在应用程序启动时,将业务代码中的原代码与目标代码进行交换,以便通过所述目标代码在响应所述点击事件之前生成所述第一页面的标识;其中,所述原代码为触发所述点击事件之后需要执行的原生系统函数;所述目标代码包括所述原生系统函数及埋点标识生成方法。23.其中,所述原代码中的函数为:uicollectionview、uitableview、uicontrol、uiviewcontroller中至少一者中的函数。24.为实现上述目的,本发明进一步提供一种电子设备,包括:25.存储器,用于存储计算机程序;26.处理器,用于执行所述计算机程序时实现上述埋点数据生成方法的步骤。27.为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述埋点数据生成方法的步骤。28.通过以上方案可知,本发明实施例提供的一种埋点数据生成方法、装置、设备及存储介质;在本方案中,若监测到用户在第一页面触发了点击事件,则在响应点击事件之前生成第一页面的标识,该标识为第一页面的to值;响应该点击事件跳转至第二页面后,将标识与第二页面进行绑定,将标识作为所述第二页面的from值,根据每个页面的from值及to值生成埋点数据。可见,在本方案中,每个页面根据from值及to值生成埋点数据后,即可通过from值了解当前页面的上一页面,通过to值了解当前页面的下一页面,从而避免出现血缘关系残缺,使得生成的用户链路完整,提高用户行为分析效果,为产品优化提供数据参考支撑。附图说明29.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。30.图1为本发明实施例公开的一种埋点数据生成方法流程示意图;31.图2为本发明实施例公开的整体流程示意图;32.图3为本发明实施例公开的一种埋点数据生成装置结构示意图;33.图4为本发明实施例公开的一种电子设备结构示意图。具体实施方式34.目前,由于现有的埋点需要手动添加,所以就造成了现有埋点数据中,用户行为链路是不完整的,只在特定场景能跟踪到有限的上一级,从而造成对用户行为难以追踪,例如:网页a可以跳转至目标网页,网页b也可以跳转至目标网页,那么位于目标网页内的埋点所采集的埋点数据中,只会记录存在两个网页跳转至目标网页,但是并不会记录具体是哪个网页跳转至目标网页,这样埋点数据就体现不出用户的完整行为链路。因此,为了解决上述技术问题,本发明实施例公开了一种埋点数据生成方法、装置、设备及存储介质,以避免生成的埋点数据中血缘关系残缺,造成用户链路不完整。35.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。36.参见图1,本发明实施例提供的一种埋点数据生成方法流程示意图,包括:37.s101、若监测到用户在第一页面触发了点击事件,则在响应点击事件之前,生成第一页面的标识,该标识为第一页面的to值;38.在本实施例中,若用户在第一页面触发了点击事件,那么在响应该点击事件之前,首先需要生成32位随机数,将该32位随机数作为第一页面的标识;其中,不同页面的不同点击事件生成的标识互不相同。本实施例中,需要将标识作为第一页面的to值,在跳转至第二页面后,to值作为第二页面的from值,以便通过from值了解第二页面是从第一页面跳转生成的。39.s102、响应点击事件跳转至第二页面,获取标识,将标识作为第二页面的from值,并与第二页面进行绑定;40.s103、根据每个页面的from值及to值生成埋点数据。41.在本实施例中,响应点击事件后,界面会从第一页面跳转至第二页面,然后将第一页面的to值作为第二页面的from值。需要说明的是,本实施例所述的第一页面和第二页面为代表跳转前后的两个页面,如果第二页面还需要再跳转至下一个页面,那么可继续将第二页面作为第一页面,将跳转后的下一页面作为第二页面继续执行s101~s102,从而使得每个页面在跳转后,均有对应的from值及to值,通过每个页面的from值及to值生成埋点数据后,即可了解用户的行为链路。42.例如:获取的埋点数据中,网页a的to值为m,网页b的from值为m,网页b的to值为n,网页c的from值为n;可以看出,网页a的to值与网页b的from值相同,则代表用户访问网页a后触发点击事件跳转至网页b,同理,网页b的to值与网页c的from值相同,则代表用户访问网页b后触发点击事件跳转至网页c,那么用户行为链路为:网页a—网页b—网页c。43.综上可以看出,本方案中,每个页面根据from值及to值生成埋点数据后,即可通过from值了解当前页面的上一页面,通过to值了解当前页面的下一页面,从而避免出现血缘关系残缺,使得生成的用户链路完整,提高用户行为分析效果,为产品优化提供数据参考支撑。44.在本实施例中,为了实现不侵入业务代码拦截系统事件,本方案通过aop(aspectorientedprogramming)面向切面编程思想,动态地在原代码的函数调用前后插入相应的目标代码。45.具体来说,aop为面向切面编程,是通过预编译方式和运行时动态代理实现程序功能的统一维护的一种技术。aop是oop((objectorientedprogramming,面向对象程序设计)的延续,是软件开发中的一个热点,是函数式编程的一种衍生范型。利用aop可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。可见,aop作用为:在程序运行期间,在不修改源码的情况下对方法进行功能增强,aop优势为:减少重复代码,提高开发效率,并且便于维护。因此,本方案使用aop切片编程方式,可以解决现有埋点数据缺失的问题,并且在解决该问题时,可避免对现有代码进行巨大的改动,以免造成分析难度巨大,使历史数据浪费。使用aop切片编程方式,还可以提高开发效率,让该功能迅速上线投入使用,为后续的个性化推荐服务打好基础。用最小的改动实现需求的最优实现。46.在本实施例中,客户端的开发主要分为android(基于linux的移动设备操作系统)和ios(移动操作系统)两部分。下面分别针对不同操作系统对本方案进行具体说明:47.一、ios解决方案的实现48.在本实施例中,若当前操作系统为ios操作系统,则本方案在应用程序启动时,会将业务代码中的原代码与目标代码进行交换,以便通过目标代码在响应点击事件之前生成第一页面的标识;其中,该原代码为触发点击事件之后需要执行的原生系统函数;该目标代码包括原生系统函数及埋点标识生成方法。49.也就是说,为了避免对业务代码改动较大,本方案需要通过hook(交换)方式对业务代码中的原代码与目标代码进行交换,其中,原代码是触发点击事件之后需要执行的原生系统函数,该原生系统函数的作用是产生一条信息,该信息的作用是告知系统用户触发了点击事件,以便系统继续执行相应点击事件等后续操作;本方案中的目标代码中同样包括了原生系统函数,因此将目标代码与原代码交换后,业务代码提供的原始功能同样还能实现,并且,由于目标代码中还存在埋点标识生成方法,因此本方案还可以在响应点击事件之前生成第一页面的标识。具体来说,在objective‑c(c语言的面向对象编程语言)中,可利用runtime(运行时)特性,用methodswizzling(方法的交换,用于修改objective‑c中两个方法的实现)来hook相应的函数。若项目使用的开发语言是swift编程语言,与objective‑c的实现有些许差别,不能直接重写 load()方法里面交换,需要自己在拓展里写一个静态方法,在app(application,应用程序)启动的时候调用该方法,从而实现交换。本方案为了给所有类方便地hook,可通过swizzedkit来处理交换。50.需要说明的是,若考虑到全量收集数据,则会想到hookappdelegate(应用程序生命周期管理)代理方法、uiviewcontroller(用户界面视图控制器)生命周期方法、按钮点击事件、手势事件、各种系统控件的点击回调方法、应用状态切换等等都要处理。51.参见表1,为本发明实施例公开的动作与事件关系表:52.表1[0053][0054]参见表1,表1中动作这一列中,各个函数或者各个类中的函数即为需要交换的函数,在事件一列中,给各个类添加分类是为了添加目标代码,以便在相应事件发生时,通过交换的目标代码生成页面的标识。在本实施例中,可设置原代码中的函数可以为:uicollectionview(用户界面集合视图)、uitableview(用户界面表格视图控件)、uicontrol(用户界面控制器)、uiviewcontroller(用户界面视图控制器)中至少一者中的函数。也即,本实施例可对uicollectionview、uitableview、uicontrol、uiviewcontroller中的函数进行hook。当然,也可以对其他函数进行hook,在此并不具体限定。[0055]需要说明的是,本实施例在hook时需要注意如下内容:[0056]1、在本实施例中,需要给uiviewcontroller添加一个from字段,记录当前页面的来源。而且用一个管理类autotracekit来管理当前时刻的from和to,此时只需要在之前代码埋点的统一方法中添加上from和to参数就可以实现血缘关系的处理。[0057]2、父类的交换方法在调用的时候必须放在比子类交换方法前的位置,尽量不要出现先子后父的顺序,从而避免出现父类的方法不执行的情况。若存在子类交换方法在前、父类的交换方法在后的情况,需要特殊处理,处理方法有以下两种:一种重写父类交换方法的实现,另一种是调用super.交换方法在重写方法中,实现子类的交换方法,以及交换父类和子类方法,调用位置先父后子。[0058]3、uicollectionview、uitableview的hook有两步,需要先hookdelegate属性,然后再交换点击事件方法。[0059]4、页面结构有uiviewcontroller嵌套uiviewcontroller的,此时子vc的from就是父vc的from。所以通过[0060]self.navigationcontroller?.viewcontrollers.last==self判断是不是主界面。[0061]5、若旧埋点在viewdidload(在视图加载后被调用)中,那么每次进入到该页面的时候to需要置为空,所以在对uiviewcontroller的交换方法需要交换viewdidload和viewwillappear(视图即将可见时调用)。[0062]通过以上的处理后,即可实现血缘关系的记录,同时有助于后续的拓展和维护,用最小的改变结合实际做出最优的处理。为了方便使用,可见实现交换功能的文件封装成一个pod(cocoapods,ios包管理器),可在任意工程中添加进去,快速实现埋点血缘关系的处理。完善用户的行为链路。其具体使用步骤为:使用pod'aktrace','0.1.1'即可在工程中引入。在appdelegate中调用交换方法,autotracekit.initswizzedmethod(),在埋点需要的地方添加上from和to的参数,如果是一些uitapgesturerecognizer(用户界面手势识别器)点击的地方,可以在点击之前调用[0063]autotracekit.createchildid()实现生成该点击事件的to值。[0064]二、android解决方案的实现[0065]在本实施例中,主要基于gradle(项目自动化构建开源工具)的tranform实现aop面向切面编程的一种方案。tranform是android官方提供给开发者在项目构建阶段(.class‑>.dex转换期间)用来修改.class文件的一套标准api,即把输入的.class文件转变成目标字节码文件。本方案利用tranform的特性,可以hook到android最底层各种事件的监听(页面点击事件、软键盘上搜索或确定的点击事件等等)。这样就可以在编译期就可以插入相关代码,通过相关代码实现在事件触发后执行页面标签的生成、页面与标签的绑定等操作。[0066]参见图2,为本发明实施例提供的整体流程示意图,具体包括如下步骤:[0067]1、用户在第一页面触发btn点击,此时会生成点击事件;[0068]2、hookonclick点击事件,在点击事件响应之前,会生成32位随机数,并继续执行该点击事件;其中,每次点击事件触发之前均需要生成一个32位随机数,随机数具有唯一性,不同点击事件具有不同的32位随机数;该32位随机数即为第一页面的to值;也即:to值是用户点击界面中的某个按钮,通过代码hook点击事件,触发真正的点击之前生成的32位随机数;[0069]3、执行点击事件后,会打开新界面activity,该新界面即为第二页面;其中,第一页面的to值即为第二页面的from值;也即:from值就是用户点击按钮开启一个新页面后,用户点击按钮产生的to值对于开启的新activity界面就是from值;[0070]4、跳转到第二页面后,会hook到对应activity的tostring(),拿到第二页面的唯一标记,并将第二页面的唯一标记与第二页面的from值进行绑定,维护在队列中;其中,将第二页面的from值与第二页面的唯一标记进行绑定,即实现了将第二页面的from值与第二页面绑定。其中,每次新页面生成时,均会通过调用tostring()获取系统生成的界面唯一标记。[0071]需要说明的是,在启动的activity中,所有的埋点均可通过最顶层的activity的类名,去队列中找到对应的activity并获取32位随机数;在activity销毁时,也是通过tostring(),去队列中找到对应的activity,获取32位随机数进行移除;其中,activity的tostring()生成的唯一标记包含了类名,所以可以通过for循环遍历找到队列中对应的唯一标记。[0072]综上可以看出,在本方案中,可基于现有的手动埋点方案进行优化,通过aop面向切面编程思想,动态地在函数调用前后插入相应的代码。不侵入业务代码阻断系统事件,以最少的改动实现全量完善用户行为链路的效果。[0073]下面对本发明实施例提供的埋点数据生成装置、设备及存储介质进行介绍,下文描述的埋点数据生成装置、设备及存储介质与上文描述的埋点数据生成方法可以相互参照。[0074]参见图3,本发明实施例提供的一种埋点数据生成装置结构示意图,包括:[0075]标识生成模块11,用于监测到用户在第一页面触发了点击事件时,在响应所述点击事件之前生成所述第一页面的标识,所述标识为所述第一页面的to值;[0076]响应模块12,用于响应所述点击事件跳转至第二页面;[0077]绑定模块13,用于获取所述标识,将所述标识作为所述第二页面的from值,并与所述第二页面进行绑定;[0078]数据生成模块14,用于根据每个页面的from值及to值生成埋点数据。[0079]其中,所述标识生成模块具体用于:生成32位随机数,将所述32位随机数作为所述第一页面的标识;其中,不同页面的不同点击事件生成的标识互不相同。[0080]其中,所述埋点数据生成装置还包括交换模块;[0081]所述交换模块用于在当前操作系统为ios操作系统时,在应用程序启动时,将业务代码中的原代码与目标代码进行交换,以便通过所述目标代码在响应所述点击事件之前生成所述第一页面的标识;其中,所述原代码为触发所述点击事件之后需要执行的原生系统函数;所述目标代码包括所述原生系统函数及埋点标识生成方法。[0082]其中,所述原代码中的函数为:uicollectionview、uitableview、uicontrol、uiviewcontroller中至少一者中的函数。[0083]参见图4,本发明实施例还提供了一种电子设备结构示意图,包括:[0084]存储器21,用于存储计算机程序;[0085]处理器22,用于执行所述计算机程序时实现上述任意方法实施例所述的埋点数据生成方法的步骤。[0086]在本实施例中,设备可以是pc(personalcomputer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机等终端设备。[0087]该设备可以包括存储器21、处理器22和总线23。[0088]其中,存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器21在一些实施例中可以是设备的内部存储单元,例如该设备的硬盘。存储器21在另一些实施例中也可以是设备的外部存储设备,例如设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字卡(securedigital,sd),闪存卡(flashcard)等。进一步地,存储器21还可以既包括设备的内部存储单元也包括外部存储设备。存储器21不仅可以用于存储安装于设备的应用软件及各类数据,例如执行数据生成方法的程序代码等,还可以用于暂时地存储已经输出或者将要输出的数据。[0089]处理器22在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器21中存储的程序代码或处理数据,例如执行数据生成方法的程序代码等。[0090]该总线23可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0091]进一步地,设备还可以包括网络接口24,网络接口24可选的可以包括有线接口和/或无线接口(如wi‑fi接口、蓝牙接口等),通常用于在该设备与其他电子设备之间建立通信连接。[0092]可选地,该设备还可以包括用户接口25,用户接口25可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口25还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight‑emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在设备中处理的信息以及用于显示可视化的用户界面。[0093]图4仅示出了具有组件21‑25的设备,本领域技术人员可以理解的是,图4示出的结构并不构成对设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。[0094]本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意方法实施例所述的埋点数据生成方法的步骤。[0095]其中,该存储介质可以包括:u盘、移动硬盘、只读存储器(read‑onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0096]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。[0097]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献