CN111338885A - App数据的动态收集、统计方法及装置、数据服务中心 - Google Patents
App数据的动态收集、统计方法及装置、数据服务中心 Download PDFInfo
- Publication number
- CN111338885A CN111338885A CN201811561882.3A CN201811561882A CN111338885A CN 111338885 A CN111338885 A CN 111338885A CN 201811561882 A CN201811561882 A CN 201811561882A CN 111338885 A CN111338885 A CN 111338885A
- Authority
- CN
- China
- Prior art keywords
- data
- indication
- operation event
- app
- receiving
- 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.)
- Pending
Links
- 238000007619 statistical method Methods 0.000 title claims abstract description 13
- 238000000034 method Methods 0.000 claims abstract description 71
- 238000013480 data collection Methods 0.000 claims abstract description 55
- 238000002347 injection Methods 0.000 claims description 19
- 239000007924 injection Substances 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 11
- 230000003993 interaction Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 239000012634 fragment Substances 0.000 description 6
- 238000011161 development Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000009472 formulation Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012858 packaging process Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明适用于数据服务技术领域,提供了一种APP数据的动态收集、统计方法及装置、数据服务中心,所述动态收集方法包括:接收APP数据收集的指示,所述指示携带操作事件;基于所述指示注入与所述操作事件对应的拦截代码;接收后台服务端下发的与所述指示对应的数据配置;当产生所述操作事件时,基于所述数据配置收集对应的数据。本发明中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种APP数据的动态收集、统计方法及装置、数据服务中心。
背景技术
安卓(Android)***具有操作简单、手机应用多且多数免费、平台开放等优点,被广泛地应用在平板电脑、电视、智能手机、打印机、车载导航等电子产品中。
随着移动互联网的蓬勃发展,各种各样的手机应用客户端(以下简称APP)出现在我们的手机中。目前应用市场中绝大部分的APP都需要有网络交互,网络交互的性能直接影响着APP的用户体验。因此了解全国甚至全球各个地区使用APP的网络性能数据,才能找到提高APP用户体验的方法。
用户的行为统计分析是进行APP运营指导的重要组成部分,而APP的数据统计是前提和基础,在现有技术中,已经出现一些开源框架可进行数据收集统计,但通常都需要进行手动埋点,对代码的侵入性较强;另外,修改统计数据之后就需要重新发版,过程繁琐。
发明内容
本发明实施例提供了一种APP数据的动态收集、统计方法及装置、数据服务中心,旨在解决现有技术的由于修改数据收集配置的过程比较繁琐的问题。
一种APP数据的动态收集方法,包括:
接收APP数据收集的指示,所述指示携带操作事件;
基于所述指示注入与所述操作事件对应的拦截代码;
接收后台服务端下发的与所述指示对应的数据配置;
当产生所述操作事件时,基于所述数据配置收集对应的数据。
优选地,所述APP数据基于Android***,基于所述指示注入与所述操作事件对应的拦截代码具体为:
在形成class文件后基于所述指示注入与所述操作事件对应的拦截代码。
优选地,所述拦截代码包括:页面代码和/或事件代码,在形成class文件后基于所述指示注入与所述操作事件对应的拦截代码包括:
在形成class文件后,未形成APK之前,遍历当前输入的文件的类型,获取目标文件,所述目标文件的类型以class结尾;
根据所述目标文件的类型对所述目标文件注入对应的拦截代码。
优选地,当产生所述操作事件时,基于所述数据配置收集对应的数据包括:
当产生操作事件时,判断当前是否需要收集数据;
当判断为是时,根据所述操作事件的类型及所述数据配置收集对应的数据。
优选地,所述数据配置包括:页面名称及对应的数据描述。
优选地,当产生操作事件时,判断当前是否需要收集数据具体为:
当产生操作事件时,判断当前的页面名称是否与所述配置数据中的页面名称匹配;
当判断为是时,确定当前需要收集数据。
本发明还提供一种APP数据的动态收集装置,包括:
第一接收单元,用于接收APP数据收集的指示;
注入单元,用于基于所述指示注入拦截代码;
第二接收单元,用于接收后台服务端下发的与所述指示对应的数据配置;
收集单元,用于当产生操作事件时,基于所述数据配置收集对应的数据。
本发明还提供一种Android***,所述Android***包括一种APP数据的动态收集装置,所述动态收集装置包括:
第一接收单元,用于接收APP数据收集的指示;
注入单元,用于基于所述指示注入拦截代码;
第二接收单元,用于接收后台服务端下发的与所述指示对应的数据配置;
收集单元,用于当产生操作事件时,基于所述数据配置收集对应的数据。
本发明还提供一种APP数据的统计方法,包括:
接收APP数据收集的指示;
基于所述指示注入拦截代码;
接收后台服务端下发的与所述指示对应的数据配置;
当产生操作事件时,基于所述数据配置收集对应的数据;
对所收集的数据进行统计。
本发明还提供一种APP数据的统计装置,包括:
指示接收单元,用于接收APP数据收集的指示;
代码注入单元,用于基于所述指示注入拦截代码;
配置接收单元,用于接收后台服务端下发的与所述指示对应的数据配置;
数据收集单元,用于当产生操作事件时,基于所述数据配置收集对应的数据;
数据统计单元,用于对所收集的数据进行统计。
本发明还提供一种数据服务中心,包括一种APP数据的统计装置及后台服务端,
后台服务端,用于基于指示进行数据配置;
所述统计装置包括:
指示接收单元,用于接收APP数据收集的指示;
代码注入单元,用于基于所述指示注入拦截代码;
配置接收单元,用于接收后台服务端下发的与所述指示对应的数据配置;
数据收集单元,用于当产生操作事件时,基于所述数据配置收集对应的数据;
数据统计单元,用于对所收集的数据进行统计。
本发明还提供一种存储器,所述存储器存储有计算机程序,所述计算机程序被处理器执行如下步骤:
接收APP数据收集的指示,所述指示携带操作事件;
基于所述指示注入与所述操作事件对应的拦截代码;
接收后台服务端下发的与所述指示对应的数据配置;
当产生所述操作事件时,基于所述数据配置收集对应的数据。
本发明还提供一种服务终端,包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收APP数据收集的指示,所述指示携带操作事件;
基于所述指示注入与所述操作事件对应的拦截代码;
接收后台服务端下发的与所述指示对应的数据配置;
当产生所述操作事件时,基于所述数据配置收集对应的数据。
本发明实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
附图说明
图1为本发明第一实施例提供的一种APP数据的动态收集方法的流程图;
图2为本发明第一实施例提供的一种APP数据的动态收集方法的步骤S2的具体流程图;
图3为本发明第一实施例提供的一种APP数据的动态收集方法的步骤S4的具体流程图;
图4为本发明第二实施例提供的一种APP数据的动态收集装置的结构图;
图5为本发明第三实施例提供的一种APP数据的统计方法的流程图;
图6为本发明第四实施例提供的一种APP数据的统计装置的结构图;
图7为本发明第六实施例提供的一种服务终端的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例中,一种APP数据的动态收集方法,包括:接收APP数据收集的指示;基于所述指示注入拦截代码;接收后台服务端下发的与所述指示对应的数据配置;当产生操作事件时,基于所述数据配置收集对应的数据。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明第一实施例提供的一种APP数据的动态收集方法的流程图,该动态收集方法包括:
步骤S1,接收APP数据收集的指示;
具体地,当APP运营上有新的需求时,例如需要对APP的某些数据进行统计分析时,首先需要进行数据的收集,于是发出数据收集的指示,数据收集时需要进行埋点处理,该数据手机的指示可包括数据的类型、页面名称、操作事件等。
步骤S2,基于指示注入与操作事件对应的拦截代码;
具体地,接收到数据收集的指示后,需要进行埋点处理,在本实施例中,基于前述指示注入与前述操作事件对应的拦截代码,以实现埋点目的;
步骤S3,接收后台服务端下发的与指示对应的数据配置;
具体地,当运营商发起数据收集的指示后,后台服务端根据埋点需求(需要进行埋点的位置及需要收集的数据)按照预定协议转为对应的格式(即数据配置),例如:需要在某个按钮被点击时上传用户名,那么相应的格式为:
PageName:com.xx.xx/MainActivity
ViewPath:DecorView/.../ButtonFragment[0]/Button[0]
DataPath:this.context.mName
EventType:EventTypeClick;
然后android***将此格式数据交给后台服务开发进行下发,因此接收到此数据格式后就会进行相应的数据收集。该数据配置可包括:页面的名称及对应的数据描述。
步骤S4,当产生操作事件时,基于数据配置收集对应的数据;
具体地,当与数据配置对应的操作事件产生时,基于前述数据配置收集对应的数据。
在本实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
在本实施例的一个优选方案中,该步骤S3之前还可包括:
预先制定数据协议;
具体地,需要预先制定需要收集的数据的协议,数据埋点的目的就是页面上产生某个操作事件时,可以知道当前和页面相关的某个数据,例如,点击某个添加购物车按钮,需要知道当前的商品价格,因此,进行数据统计就需要知道两个部分的内容:当前页面的名称、数据描述,制定数据协议主要围绕这两个方面:
首先是view描述,view描述包含两个部分,首先是当前页面的名称,PageName:package name/class name,然后是该view在当前页面的位置,android中的页面是一个树形结构,不同层之间使用/分开,同层之间使用序号标示。例如:
ViewPath:DecorView/.../ViewPager[0]/ButtonFragment[0]/AppCompatButton[0]
其次是数据描述,数据描述的作用是按照当前描述收集数据,(当描述符合时,按照此路径收集数据)比如某个数据路径为DataPath:this.context.demoList[5],其中的this指的是当前view,也就是点击的view,然后获取当前的context,然后再使用反射得到属性字段demoList,最后取得demoList的第5个元素,如表1所示为上述路径中关键字的解释。
表1
在本实施例的一个优选方案中,该APP数据是基于Android***,在Android***下实现,该拦截代码(埋点代码)包括:页面代码和/或事件代码,即埋点分为页面埋点及事件埋点,页面埋点主要统计用户进入某个页面的次数,在页面中停留时间。事件埋点主要用于统计用户点击某个控件时的用户数据,比如某个商品价格,商品名称,用户类型等。页面埋点主要是在Acticity或者fragment的生命周期方法内注入代码,事件埋点主要对所有的点击事件进行aop,注入拦截代码。
进一步地,该步骤S2具体为:在形成class文件后基于指示注入与操作事件对应的拦截代码;
如图2所示,为本发明第一实施例提供的一种APP数据的动态收集方法的步骤S2的具体流程图,该步骤S2具体包括:
步骤S21,在形成class文件后,未形成APK之前,遍历当前输入的文件的类型,获取目标文件;
具体地,在形成class文件后,未形成APK之前,遍历当前输入的文件的类型,获取目标文件,该目标文件的类型是以class结尾。
步骤S22,根据目标文件的类型对目标文件注入对应的拦截代码;
具体地,在android***的打包过程为:java文件->classes文件->apk,在classes文件->apk中进行拦截代码的注入,在Android***的编译插件gradle中利用transform方法输入文件然后进行自定义后输出,在此过程中进行拦截代码的注入。
在本实施例中,首先遍历输入文件的类型,是否以class结尾,然后判断是否是activity或者是fragment,如果是,就说明是需要拦截的类,下面再看如何注入代码:
页面代码注入:使用反射,查看拦截类中是否存在onResume和onPause方法,如果存在,使用字节码修改工具javaassist或者ASM进行类文件修改,加入Monitor.enter()和Monitor.exit(),如果不存在,使用javaassist或者ASM先加入onResume和onPause,然后加入注入代码;
事件代码注入:使用反射,找到拦截类中所有的onClick方法,依然使用字节码修改工具,在onClick方法中注入事件代码,Monitor.onClick(view)。
在本实施例的一个优选方案中,如图3所示,为本发明第一实施例提供的一种APP数据的动态收集方法的步骤S4的具体流程图,该步骤S4具体包括:
步骤S41,当产生操作事件时,判断当前是否需要收集数据;
具体地,当产生操作事件时,首先判断是否需要在当前页面收集数据,优选地,判断当前的页面名称是否与所述配置数据中的页面名称匹配,若匹配则确定需要在当前页面收集数据,于是转到步骤S42;若不匹配则确定不需要在当前页面收集数据,转到步骤S43,停止进程,在转为下一个界面时,继续判断当前页面是否需要收集数据。
步骤S42,当判断为是时,根据操作事件的类型及数据配置收集对应的数据;
具体地,若判断需要在当前页面收集数据时,根据操作事件的类型及相应的数据配置来收集数据;
例如:当该操作事件为页面操作事件(页面代码)时,即操作事件为EventTypePage,此类型表示的是页面埋点,需要收集的数据是页面名称以及在此页面停留时间,那么就获取当前的页面名称以及进入以及退出时间,然后进行本地存储。
若操作事件为页面点击类型事件(事件代码),即操作事件为EventTypeClick:此类型表示的是点击类型事件,那么页面需要的是相关数据,根据对应的view描述,判断是否需要对当前view点击产生的事件进行收集,如果需要,那么根据相应的数据路径获取数据进行本地存储(APP中存储)。
步骤S43,结束本次流程;
具体地,若不匹配则确定不需要在当前页面收集数据,结束本次流程,在转为下一个界面时,继续判断当前页面是否需要收集数据。
在本实施例的一个优选方案中,该步骤S4之后还包括:
将收集的数据上传至服务器;
具体地,在重新进入对应APP时,或者每个一段时间,对APP存储的数据通过后台服务端的线程上传至服务器存储。
在本实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
其次,在形成class文件后,利用gradle插件进行拦截代码的注入,无需在java文件中手动修改代码,无需发布新版本,简化过程。
实施例二:
基于上述实施例一,如图4示,为本发明第二实施例提供的一种APP数据的动态收集装置的结构图,该收集装置包括:第一接收单元1、与第一接收单元1连接的注入单元2、与注入单元2连接的第二接收单元3、与第二接收单元3连接的收集单元4,其中:
第一接收单元1,用于接收APP数据收集的指示;
具体地,当APP运营上有新的需求时,例如需要对APP的某些数据进行统计分析时,首先需要进行数据的收集,于是发出数据收集的指示,数据收集时需要进行埋点处理,该数据手机的指示可包括数据的类型、页面名称、操作事件等。
注入单元2,用于基于指示注入与操作事件对应的拦截代码;
具体地,接收到数据收集的指示后,需要进行埋点处理,在本实施例中,基于前述指示注入与前述操作事件对应的拦截代码,以实现埋点目的;
第二接收单元3,用于接收后台服务端下发的与指示对应的数据配置;
具体地,当运营商发起数据收集的指示后,后台服务端根据埋点需求(需要进行埋点的位置及需要收集的数据)按照预定协议转为对应的格式(即数据配置),例如:需要在某个按钮被点击时上传用户名,那么相应的格式为:
PageName:com.xx.xx/MainActivity
ViewPath:DecorView/.../ButtonFragment[0]/Button[0]
DataPath:this.context.mName
EventType:EventTypeClick;
然后android***将此格式数据交给后台服务开发进行下发,因此接收到此数据格式后就会进行相应的数据收集。该数据配置可包括:页面的名称及对应的数据描述。
收集单元4,用于当产生操作事件时,基于数据配置收集对应的数据;
具体地,当与数据配置对应的操作事件产生时,基于前述数据配置收集对应的数据。
在本实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
在本实施例的一个优选方案中,该收集装置还包括:与第二接收单元3连接的制定单元,其中:
制定单元,用于预先制定数据协议;
具体地,需要预先制定需要收集的数据的协议,数据埋点的目的就是页面上产生某个操作事件时,可以知道当前和页面相关的某个数据,例如,点击某个添加购物车按钮,需要知道当前的商品价格,因此,进行数据统计就需要知道两个部分的内容:当前页面的名称、数据描述,制定数据协议主要围绕这两个方面:
首先是view描述,view描述包含两个部分,首先是当前页面的名称,PageName:package name/class name,然后是该view在当前页面的位置,android中的页面是一个树形结构,不同层之间使用/分开,同层之间使用序号标示。例如:
ViewPath:DecorView/.../ViewPager[0]/ButtonFragment[0]/AppCompatButton[0];
其次是数据描述,数据描述的作用是按照当前描述收集数据,(当描述符合时,按照此路径收集数据)比如某个数据路径为DataPath:this.context.demoList[5],其中的this指的是当前view,也就是点击的view,然后获取当前的context,然后再使用反射得到属性字段demoList,最后取得demoList的第5个元素。
在本实施例的一个优选方案中,该APP数据是基于Android***,在Android***下实现,该拦截代码(埋点代码)包括:页面代码和/或事件代码,即埋点分为页面埋点及事件埋点,页面埋点主要统计用户进入某个页面的次数,在页面中停留时间。事件埋点主要用于统计用户点击某个控件时的用户数据,比如某个商品价格,商品名称,用户类型等。页面埋点主要是在Acticity或者fragment的生命周期方法内注入代码,事件埋点主要对所有的点击事件进行aop,注入拦截代码。
进一步地,该注入单元2具体用于:在形成class文件后基于指示注入与操作事件对应的拦截代码;
进一步地,该注入单元2具体包括:获取子单元及与其连接的注入子单元,其中:
获取子单元,用于在形成class文件后,未形成APK之前,遍历当前输入的文件的类型,获取目标文件;
具体地,在形成class文件后,未形成APK之前,遍历当前输入的文件的类型,获取目标文件,该目标文件的类型是以class结尾。
注入子单元,用于根据目标文件的类型对目标文件注入对应的拦截代码;
具体地,在android***的打包过程为:java文件->classes文件->apk,在classes文件->apk中进行拦截代码的注入,在Android***的编译插件gradle中利用transform方法输入文件然后进行自定义后输出,在此过程中进行拦截代码的注入。
在本实施例中,首先遍历输入文件的类型,是否以class结尾,然后判断是否是activity或者是fragment,如果是,就说明是需要拦截的类,下面再看如何注入代码:
页面代码注入:使用反射,查看拦截类中是否存在onResume和onPause方法,如果存在,使用字节码修改工具javaassist或者ASM进行类文件修改,加入Monitot.enter()和Monitor.exit(),如果不存在,使用javaassist或者ASM先加入onResume和onPause,然后加入注入代码;
事件代码注入:使用反射,找到拦截类中所有的onClick方法,依然使用字节码修改工具,在onClick方法中注入事件代码,Monitor.onClick(view)。
在本实施例的一个优选方案中,该收集单元4包括:判断子单元及与其连接的处理子单元,其中:
判断子单元,用于当产生操作事件时,判断当前是否需要收集数据;
具体地,当产生操作事件时,首先判断是否需要在当前页面收集数据,优选地,判断当前的页面名称是否与所述配置数据中的页面名称匹配,若匹配则确定需要在当前页面收集数据,将结果反馈给处理子单元;若不匹配则确定不需要在当前页面收集数据,结束本次流程,在转为下一个界面时,继续判断当前页面是否需要收集数据。
处理子单元,用于当判断为是时,根据操作事件的类型及数据配置收集对应的数据;
具体地,若判断需要在当前页面收集数据时,根据操作事件的类型及相应的数据配置来收集数据;
例如:当该操作事件为页面操作事件(页面代码)时,即操作事件为EventTypePage,此类型表示的是页面埋点,需要收集的数据是页面名称以及在此页面停留时间,那么就获取当前的页面名称以及进入以及退出时间,然后进行本地存储。
若操作事件为页面点击类型事件(事件代码),即操作事件为EventTypeClick:此类型表示的是点击类型事件,那么页面需要的是相关数据,根据对应的view描述,判断是否需要对当前view点击产生的事件进行收集,如果需要,那么根据相应的数据路径获取数据进行本地存储(APP中存储)。
在本实施例的一个优选方案中,该收集装置还包括:与收集单元4连接的上传单元,其中:
上传单元,用于将收集的数据上传至服务器;
具体地,在重新进入对应APP时,或者每个一段时间,对APP存储的数据通过后台服务端的线程上传至服务器存储。
在本实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
其次,在形成class文件后,利用gradle插件进行拦截代码的注入,无需在java文件中手动修改代码,无需发布新版本,简化过程。
本发明还提出一种Android***,该Android***包括如上述实施例二所述的APP数据的动态收集装置,该动态收集装装置的具体结构、工作原理及所带来的技术效果与上述实施例二的描述一致,此处不再赘述。
实施例三:
图5示出了本发明第三实施例提供的一种APP数据的统计方法的流程图,该统计方法包括:
步骤A1,接收APP数据收集的指示;
具体地,当APP运营上有新的需求时,例如需要对APP的某些数据进行统计分析时,首先需要进行数据的收集,于是发出数据收集的指示,数据收集时需要进行埋点处理,该数据手机的指示可包括数据的类型、页面名称、操作事件等。
步骤A2,基于指示注入与操作事件对应的拦截代码;
具体地,接收到数据收集的指示后,需要进行埋点处理,在本实施例中,基于前述指示注入与前述操作事件对应的拦截代码,以实现埋点目的;
步骤A3,接收后台服务端下发的与指示对应的数据配置;
具体地,当运营商发起数据收集的指示后,后台服务端根据埋点需求(需要进行埋点的位置及需要收集的数据)按照预定协议转为对应的格式(即数据配置),例如:需要在某个按钮被点击时上传用户名,那么相应的格式为:
PageName:com.xx.xx/MainActivity
ViewPath:DecorView/.../ButtonFragment[0]/Button[0]
DataPath:this.context.mName
EventType:EventTypeClick;
然后android***将此格式数据交给后台服务开发进行下发,因此接收到此数据格式后就会进行相应的数据收集。该数据配置可包括:页面的名称及对应的数据描述。
步骤A4,当产生操作事件时,基于数据配置收集对应的数据;
具体地,当与数据配置对应的操作事件产生时,基于前述数据配置收集对应的数据。
步骤A5,对所收集的数据进行统计;
具体地,对所收集的数据进行统计,得到统计结果;
在本实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
在本实施例中,该步骤A3之前还可包括:
预先制定数据协议;
具体地,需要预先制定需要收集的数据的协议,数据埋点的目的就是页面上产生某个操作事件时,可以知道当前和页面相关的某个数据,例如,点击某个添加购物车按钮,需要知道当前的商品价格,因此,进行数据统计就需要知道两个部分的内容:当前页面的名称、数据描述,制定数据协议主要围绕这两个方面:
首先是view描述,view描述包含两个部分,首先是当前页面的名称,PageName:package name/class name,然后是该view在当前页面的位置,android中的页面是一个树形结构,不同层之间使用/分开,同层之间使用序号标示。例如:
ViewPath:DecorView/.../ViewPager[0]/ButtonFragment[0]/AppCompatButton[0]
其次是数据描述,数据描述的作用是按照当前描述收集数据,(当描述符合时,按照此路径收集数据)比如某个数据路径为DataPath:this.context.demoList[5],其中的this指的是当前view,也就是点击的view,然后获取当前的context,然后再使用反射得到属性字段demoList,最后取得demoList的第5个元素。
在本实施例的一个优选方案中,该APP数据是基于Android***,在Android***下实现,该拦截代码(埋点代码)包括:页面代码和/或事件代码,即埋点分为页面埋点及事件埋点,页面埋点主要统计用户进入某个页面的次数,在页面中停留时间。事件埋点主要用于统计用户点击某个控件时的用户数据,比如某个商品价格,商品名称,用户类型等。页面埋点主要是在Acticity或者fragment的生命周期方法内注入代码,事件埋点主要对所有的点击事件进行aop,注入拦截代码。
在本实施例中,步骤A1~A4的具体实现过程与上述实施例一的步骤S1~S4的具体过程一致,具体可参考上述实施例的描述,此处步骤赘述。
在本实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
其次,在形成class文件后,利用grad]e插件进行拦截代码的注入,无需在java文件中手动修改代码,无需发布新版本,简化过程。
实施例四:
如图6示,为本发明第四实施例提供的一种APP数据的统计装置的结构图,该统计装置包括:指示接收单元61、与指示接收单元61连接的代码注入单元62、与代码注入单元62连接的配置接收单元63、与配置接收单元63连接的数据接收单元64、与数据接收单元64连接的数据统计单元55,其中:
指示接收单元61,用于接收APP数据收集的指示;
具体地,当APP运营上有新的需求时,例如需要对APP的某些数据进行统计分析时,首先需要进行数据的收集,于是发出数据收集的指示,数据收集时需要进行埋点处理,该数据手机的指示可包括数据的类型、页面名称、操作事件等。
代码注入单元62,用于基于指示注入与操作事件对应的拦截代码;
具体地,接收到数据收集的指示后,需要进行埋点处理,在本实施例中,基于前述指示注入与前述操作事件对应的拦截代码,以实现埋点目的;
配置接收单元63,用于接收后台服务端下发的与指示对应的数据配置;
具体地,当运营商发起数据收集的指示后,后台服务端根据埋点需求(需要进行埋点的位置及需要收集的数据)按照预定协议转为对应的格式(即数据配置),例如:需要在某个按钮被点击时上传用户名,那么相应的格式为:
PageName:com.xx.xx/MainActivity
ViewPath:DecorView/.../ButtonFragment[0]/Button[0]
DataPath:this.context.mName
EventType:EventTypeClick;
然后android***将此格式数据交给后台服务开发进行下发,因此接收到此数据格式后就会进行相应的数据收集。该数据配置可包括:页面的名称及对应的数据描述。
数据收集单元64,用于当产生操作事件时,基于数据配置收集对应的数据;
具体地,当与数据配置对应的操作事件产生时,基于前述数据配置收集对应的数据;
数据统计单元65,用于对所收集的数据进行统计;
具体地,对所收集的数据进行统计;
在本实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
在本实施例的一个优选方案中,该统计装置还包括:与配置接收单元63连接的协议制定单元,其中:
协议制定单元,用于具体地,需要预先制定需要收集的数据的协议,数据埋点的目的就是页面上产生某个操作事件时,可以知道当前和页面相关的某个数据,例如,点击某个添加购物车按钮,需要知道当前的商品价格,因此,进行数据统计就需要知道两个部分的内容:当前页面的名称、数据描述,制定数据协议主要围绕这两个方面:
首先是view描述,view描述包含两个部分,首先是当前页面的名称,PageName:package name/class name,然后是该view在当前页面的位置,android中的页面是一个树形结构,不同层之间使用/分开,同层之间使用序号标示。例如:
ViewPath:DecorView/.../ViewPager[0]/ButtonFragment[0]/AppCompatButton[0];
其次是数据描述,数据描述的作用是按照当前描述收集数据,(当描述符合时,按照此路径收集数据)比如某个数据路径为DataPath:this.context.demoList[5],其中的this指的是当前view,也就是点击的view,然后获取当前的context,然后再使用反射得到属性字段demoList,最后取得demoList的第5个元素。
在本实施例的一个优选方案中,该APP数据是基于Android***,在Android***下实现,该拦截代码(埋点代码)包括:页面代码和/或事件代码,即埋点分为页面埋点及事件埋点,页面埋点主要统计用户进入某个页面的次数,在页面中停留时间。事件埋点主要用于统计用户点击某个控件时的用户数据,比如某个商品价格,商品名称,用户类型等。页面埋点主要是在Acticity或者fragment的生命周期方法内注入代码,事件埋点主要对所有的点击事件进行aop,注入拦截代码。
在本实施例中,指示接收单元61、代码注入单元62、配置接收单元63、数据接收单元64的具体结构及工作原理与上述实施例二描述的第一接收单元1、注入单元2、第二接收单元3及收集单元4的具体结构及工作原理一致,具体可参考上述实施例二的描述,此处不再赘述。
在本实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
其次,在形成class文件后,利用gradle插件进行拦截代码的注入,无需在java文件中手动修改代码,无需发布新版本,简化过程。
实施例五:
本发明还提出一种数据服务中心,该数据服务中心包括后台服务端及一致APP数据的统计装置,其中,该统计装置与上述实施例四所述的APP数据的统计装置的具体结构及工作原理一致,此处步骤赘述;
后台服务端,用于基于指示进行数据配置;
具体地,根据运营商发出的收集指示来进行对应的数据配置。
在本实施例的一个优选方案中,该数据服务中心还包括与后台服务端连接的服务器,其中:
服务器,用于存储数据,该数据可为收集的数据,和/或统计的数据。该统计装置通过后台服务端的线程上传前述收集的数据和/或统计的数据。
实施例六:
图7示出了本发明第六实施例提供的一种服务终端的结构图,该服务终端包括:存储器(memory)71、处理器(processor)72、通信接口(Communications Interface)73和总线74,该处理器72、存储器71、通信接口73通过总线74完成相互之间的交互通信。
存储器71,用于存储各种数据;
具体地,存储器71用于存储各种数据,例如通信过程中的数据、接收的数据等,此处对此不作限制,该存储器还包括有多个计算机程序。
通信接口73,用于该服务终端的通信设备之间的信息传输;
处理器72,用于调用存储器71中的各种计算机程序,以执行上述实施例一所提供的一种APP数据的动态收集方法,例如:
接收APP数据收集的指示,所述指示携带操作事件;
基于所述指示注入与所述操作事件对应的拦截代码;
接收后台服务端下发的与所述指示对应的数据配置;
当产生所述操作事件时,基于所述数据配置收集对应的数据。
本实施例中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
本发明还提供一种存储器,该存储器存储有多个计算机程序,该多个计算机程序被处理器调用执行上述实施例一所述的一种APP数据的动态收集方法。
本发明中,根据收集指示携带的操作事件注入拦截代码,当操作事件产生时,即时进行对应数据的收集,实现过程简单。
其次,在形成class文件后,利用gradle插件进行拦截代码的注入,无需在java文件中手动修改代码,无需发布新版本,简化过程。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (13)
1.一种APP数据的动态收集方法,其特征在于,包括:
接收APP数据收集的指示,所述指示携带操作事件;
基于所述指示注入与所述操作事件对应的拦截代码;
接收后台服务端下发的与所述指示对应的数据配置;
当产生所述操作事件时,基于所述数据配置收集对应的数据。
2.根据权利要求1所述的动态收集方法,其特征在于,所述APP数据基于Android***,基于所述指示注入与所述操作事件对应的拦截代码具体为:
在形成class文件后基于所述指示注入与所述操作事件对应的拦截代码。
3.根据权利要求2所述的动态收集方法,其特征在于,所述拦截代码包括:页面代码和/或事件代码,在形成class文件后基于所述指示注入与所述操作事件对应的拦截代码包括:
在形成class文件后,未形成APK之前,遍历当前输入的文件的类型,获取目标文件,所述目标文件的类型以class结尾;
根据所述目标文件的类型对所述目标文件注入对应的拦截代码。
4.根据权利要求1所述的动态收集方法,其特征在于,当产生所述操作事件时,基于所述数据配置收集对应的数据包括:
当产生操作事件时,判断当前是否需要收集数据;
当判断为是时,根据所述操作事件的类型及所述数据配置收集对应的数据。
5.根据权利要求4所述的动态收集方法,其特征在于,所述数据配置包括:页面名称及对应的数据描述。
6.根据权利要求5所述的动态收集方法,其特征在于,当产生操作事件时,判断当前是否需要收集数据具体为:
当产生操作事件时,判断当前的页面名称是否与所述配置数据中的页面名称匹配;
当判断为是时,确定当前需要收集数据。
7.一种APP数据的动态收集装置,其特征在于,包括:
第一接收单元,用于接收APP数据收集的指示;
注入单元,用于基于所述指示注入拦截代码;
第二接收单元,用于接收后台服务端下发的与所述指示对应的数据配置;
收集单元,用于当产生操作事件时,基于所述数据配置收集对应的数据。
8.一种Android***,其特征在于,包括如权利要求7所述的APP数据的动态收集装置。
9.一种APP数据的统计方法,其特征在于,包括:
接收APP数据收集的指示;
基于所述指示注入拦截代码;
接收后台服务端下发的与所述指示对应的数据配置;
当产生操作事件时,基于所述数据配置收集对应的数据;
对所收集的数据进行统计。
10.一种APP数据的统计装置,其特征在于,包括:
指示接收单元,用于接收APP数据收集的指示;
代码注入单元,用于基于所述指示注入拦截代码;
配置接收单元,用于接收后台服务端下发的与所述指示对应的数据配置;
数据收集单元,用于当产生操作事件时,基于所述数据配置收集对应的数据;
数据统计单元,用于对所收集的数据进行统计。
11.一种数据服务中心,其特征在于,包括后台服务端及如权利要求8所述的一种APP数据的统计装置,其中:
后台服务端,用于基于所述指示进行数据配置。
12.一种存储器,所述存储器存储有计算机程序,其特征在于,所述计算机程序被处理器执行如下步骤:
接收APP数据收集的指示,所述指示携带操作事件;
基于所述指示注入与所述操作事件对应的拦截代码;
接收后台服务端下发的与所述指示对应的数据配置;
当产生所述操作事件时,基于所述数据配置收集对应的数据。
13.一种服务终端,包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任意一项所述的数据的交互方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811561882.3A CN111338885A (zh) | 2018-12-19 | 2018-12-19 | App数据的动态收集、统计方法及装置、数据服务中心 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811561882.3A CN111338885A (zh) | 2018-12-19 | 2018-12-19 | App数据的动态收集、统计方法及装置、数据服务中心 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111338885A true CN111338885A (zh) | 2020-06-26 |
Family
ID=71183210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811561882.3A Pending CN111338885A (zh) | 2018-12-19 | 2018-12-19 | App数据的动态收集、统计方法及装置、数据服务中心 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111338885A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130818A (zh) * | 2020-09-15 | 2020-12-25 | 北京值得买科技股份有限公司 | 一种Android自动数据埋点方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017091178A (ja) * | 2015-11-09 | 2017-05-25 | 横河電機株式会社 | イベント解析装置、イベント解析システム、イベント解析方法、およびイベント解析プログラム |
CN107423048A (zh) * | 2017-04-14 | 2017-12-01 | 网易乐得科技有限公司 | 数据收集的方法、装置、介质和计算设备 |
CN108549537A (zh) * | 2018-04-08 | 2018-09-18 | 北京极数科技有限公司 | 基于Android终端的用户数据采集的方法及*** |
-
2018
- 2018-12-19 CN CN201811561882.3A patent/CN111338885A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017091178A (ja) * | 2015-11-09 | 2017-05-25 | 横河電機株式会社 | イベント解析装置、イベント解析システム、イベント解析方法、およびイベント解析プログラム |
CN107423048A (zh) * | 2017-04-14 | 2017-12-01 | 网易乐得科技有限公司 | 数据收集的方法、装置、介质和计算设备 |
CN108549537A (zh) * | 2018-04-08 | 2018-09-18 | 北京极数科技有限公司 | 基于Android终端的用户数据采集的方法及*** |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130818A (zh) * | 2020-09-15 | 2020-12-25 | 北京值得买科技股份有限公司 | 一种Android自动数据埋点方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11025750B2 (en) | Determining whether to perform requests at a server or at a client device based on resources provided by the client device | |
CN108509523B (zh) | 区块链数据的结构化处理方法、设备及可读存储介质 | |
JP6742650B2 (ja) | モバイルブラウザを用いたアプリケーションの呼び出し方法及び装置 | |
CN110232146B (zh) | 一种数据抓取方法及抓取装置 | |
CN111930472B (zh) | 一种代码调试方法、装置、电子设备及存储介质 | |
CN110263070B (zh) | 事件上报方法及装置 | |
CN103618606A (zh) | 通过短信验证的App登录方法 | |
CN110007819A (zh) | ***的操作提示方法、装置及计算机可读存储介质 | |
CN107193565B (zh) | 跨移动端开发原生app的方法 | |
CN113709187B (zh) | 多服务器的数据请求方法、装置、设备及存储介质 | |
CN111338885A (zh) | App数据的动态收集、统计方法及装置、数据服务中心 | |
CN107426266A (zh) | 数据处理方法和服务器 | |
CN111859083A (zh) | 业务数据处理方法、装置、设备及计算机可读存储介质 | |
CN106933932B (zh) | 数据处理方法、装置及应用服务器 | |
CN112115041A (zh) | 应用程序的动态埋点方法、装置、存储介质及计算机设备 | |
CN105519069B (zh) | 数据处理***、中心装置以及程序 | |
CN112925589A (zh) | 扩展接口的调用方法及装置 | |
CN105700894A (zh) | 一种修改http响应数据的方法及装置 | |
CN111756916A (zh) | 应用处理方法、装置、电子设备及计算机存储介质 | |
CN115599669A (zh) | 微服务的调试方法和装置、电子设备和可读存储介质 | |
CN112671615A (zh) | 前端用户操作行为数据的收集方法、***及存储介质 | |
CN110162687B (zh) | 一种安卓应用中的数据抓取方法及*** | |
CN111782495A (zh) | 一种埋点数据的获取方法和装置 | |
CN103309897A (zh) | 固件发布方法及*** | |
CN113626789A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200626 |