数据采集之全埋点数据采集分析方法的一些整理,包含一些思路、方法逻辑的整理分析,供数据采集分析爱好者参考。

埋点的定义

埋点分析,是网站分析的一种常用的数据采集方法。数据埋点分为初级、中级、高级三种方式。数据埋点是一种良好的私有化部署数据采集方式。

埋点技术如何采集数据,有何优缺点?

数据埋点分为初级、中级、高级三种方式,分别为:

  • 初级:在产品、服务转化关键点植入统计代码,据其独立ID确保数据采集不重复(如购买按钮点击率);
  • 中级:植入多段代码,追踪用户在平台每个界面上的系列行为,事件之间相互独立(如打开商品详情页——选择商品型号——加入购物车——下订单——购买完成);
  • 高级:联合公司工程、ETL采集分析用户全量行为,建立用户画像,还原用户行为模型,作为产品分析、优化的基础。

无疑,数据埋点是一种良好的私有化部署数据采集方式。例如V统计,针对网页微信复制统计的埋点。数据采集准确,满足了企业去粗取精,实现产品、服务快速优化迭代的需求,

但,因手动埋点工程量极大,且一不小心容易出错,成为很多工程师的痛。且其开发周期长,耗时费力,很多规模较小的公司并不具备自己埋点的能力。无埋点成为市场新宠。最后埋点、无埋点两种技术谁能成为最后赢家,我们拭目以待。

全埋点采集分析

    全埋点,也叫无埋点、无码埋点、自动埋点。全埋点是指预先收集用户的所有行为数据,然后再根据实际分析需求从中提取行为数据。

全埋点采集的事件主要包括下面四种:

• $AppStart 事件:指 App 启动,包括冷启动和热启动。

• $AppEnd 事件:指 App 退出,包括正常退出、进入后台、 App 崩溃、App 被强杀。

• $AppViewScreen 事件:指 App 页面浏览 ,对于 Android 来说,就是指切换 Activity。

• $AppClick 事件:指 App 控件被点击。

在采集的这四种事件当中,最重要并且采集难度最大的是 $AppClick 事件。所以,全埋点基本上也都是围绕着如何采集 $AppClick 事件。

全埋点的整体解决思路,就是要找到那个被点击的 View 的点击处理逻辑(也叫原处理逻辑),然后利用一定的技术原理,对原处理逻辑进行“拦截”,或者在原处理逻辑的前面或者后面“插入”相应的埋点代码,从而达到自动埋点的效果。

至于如何做到自动“拦截”View 的原点击处理逻辑,V统计认为一般都是参考 Android 系统 View 点击事件处理机制来进行的。 至于如何做到自动“插入”埋点代码,基本上都是参考编译器对 Java 代码的处理流程来进行的即:

JavaCode --> .java --> .class --> .dex

选择在不同的处理阶段“插入”代码,其所用的技术或者原理也不尽相同,所以全埋点的解决方案也是多种多样的。

面对这么多的全埋点方案,我们究竟该如何选择呢?

在选择全埋点的方案时,需要从效率、兼容性、扩展性等 方面综合考虑。

• 效率

全埋点的基本原理,其实就是利用某些技术对某些方法 (View 被点击时的处理逻辑)进行代理(或者叫 Hook),或者“插入”代码。按照“在什么时候去代理或者插入代码” 这个条件来区分的话,Android 全埋点技术可以大致分为 下面两种方式 :

静态代理

所谓静态,就是指通过 Gradle Plugin 在编译期间“插入” 或者修改代码(.class 文 件)。比如 AspectJ、ASM、javassist、AST 等方案均是这种方式,我们后面介绍的第四种方案到第七种方案均属于静态代理。

这几种方式处理的时机可以参考下图:

全埋点数据采集分析 图片来自(软盟网)

动态代理

所谓动态,就是指在代码运行的时候去进行代理。比如我们比较常见的代理 View.OnClickListener、Window.Call- back、View.AccessibilityDelegate 等方案均是这种方式。我们后面介绍的第一种方案到第三种方案均属于动态代理。

不同的方案,其处理、运行效率也各不相同,同时对 App的浸入程度以及对 App 的整体性能的影响也各不相同。整理上来说,静态代理明显优于动态代理,这是因为静态代理的“动 作”是在 App 的编译阶段处理的,不会对 App 的正常业务(App 运行时)逻辑有太大的影响。

• 兼容性

随着 Android 生态系统的快速发展,不管是 Android 系统本身,还是与 Android App 开发相关的组件和技术,都在飞速 发展快速迭代,从而也给研发全埋点方案带来一定的难度。比如不同的 Android App 有不同的开发语言(Java 、Kotlin)、 也有不同的 Java 版本(Java7、Java8)、也有不同的开发 IDE(eclipse、Android Studio)、更有不同的开发方式(原生开发、 H5、混合开发)、不同的第三方开发框架(React Native、APICloud、Weex)、不同的 Gradle 版本、以及 Lambda、D8、 Instant Run、DataBinding、Fragment 等,都会给全埋点带来很多兼容性方面的问题。

• 扩展性

随着业务的发展和数据分析需求的不断提高,即使对于全埋点,也提出了更高的采集要求。一方面要求能全部自动埋点(采集的范围),同时又要求能有更精细化的采集控制(采集自定义)。比如,如何给某个控件添加自定义属性 ? 如果不想采集 某个控件的点击事件如何处理 ?如果不想采集某种控件类型(ImageView)的点击事件如何处理 ?如果某个页面 (Activity)上所有控件的点击事件都不想采集如何处理 ?...... 任何一种全埋点的方案,都有其优点和缺点。没有普适的完美方案。针对不同的应用场景,选择最合适的数据采集方案即可。

部分内容来自网络整理和参考自:http://vtongji.ibixue.com,供参考学习交流。

数据采集之全埋点数据采集分析方法的一些整理相关推荐

  1. h5 神策埋点_神策Android全埋点方案分析

    神策Android全埋点方案 原理简单分析: Activity生命周期通过监听Application.ActivityLifecycleCallbacks,fragment的生命周期 及一些点击事件则 ...

  2. 埋点数据采集和应用生命周期

    ​作者介绍 @hrd-0.618(栩梵) 新网银行数据分析师. 专注于数据分析.埋点采集及用户行为分析.BI 数据可视化. "数据人创作者联盟"成员. 1 背景介绍 产品的精细化运 ...

  3. 大咖说:React Native 全埋点实现原理(内附赠书)

    本文主要介绍如何实现 React Native 的全埋点,主要是控件点击 $AppClick 事件.该内容,会默认你有一定的 React Native 开发经验,(若没有,也可参与文末赠书). ■ 作 ...

  4. 重磅新书 | 《Android 全埋点解决方案》预售正式开启!

    新书抢先看 这是一本实战为导向的.翔实的 Android 全埋点技术与解决方案手册,是国内知名大数据公司神策数据在该领域多年实践经验的总结. 本书详细阐述了 Android 全埋点的 8 种解决方案, ...

  5. Android 全埋点方案盘点

    全埋点是什么 全埋点,也叫无埋点.无码埋点.无痕+埋点.自动埋点. 全埋点是指无需Android应用开发工程师写代码或只写少量的代码,就能预先自动收集用户的所有行为数据,然后就可以根据实际的业务分析需 ...

  6. 数据采集埋点福音!《企业埋点体系搭建方法论及实践经验》白皮书上线

    <企业埋点体系搭建方法论及实践经验>白皮书,依托神策数据服务的 1000 余家企业客户的数据采集实战经验,全面展示神策数据所沉淀的企业数据采集埋点的最佳实践,同时围绕企业在埋点过程中所遇到 ...

  7. 揭秘数极客Android无埋点数据采集原理

    采集数据柯林斯基本分为代码埋点状语从句:无埋点.近年来无埋点的数据采集方案越来越普及,而无埋点的实现方案也有多种,我们今天讨论的问题是数据采集的一种方案,是无需开发人员重复进行采集事件的代码埋点就能达 ...

  8. 易基因|综述:单细胞DNA甲基化分析方法全介绍及未来发展前景预测

    ​大家好,这是专注表观组学十余年,领跑多组学科研服务的易基因. 2021年07月10日,<Biomolecules>杂志上发表一篇关于单细胞表观测序的综述文章,详细介绍了单细胞DNA甲基化 ...

  9. 产品随记-无埋点数据采集

    今天收到一封售前的邮件,关于H省网运营商要做手机APP数据分析的需求.客户对要分析的数据内容没有很清楚的想法,只给了百度移动统计的页面.这个需求本身不复杂,只是涉及的厂商较多:APP由我方提供,但其中 ...

最新文章

  1. IE9浏览器更像一个互联网舞台
  2. 基站定位LAC,CID转经纬度
  3. 11月1日数据结构讨论班 【杂】
  4. QT学习笔记之QTableView设置属性的方法
  5. 海纳百川、有容乃大:从4个角度解读京东3C新方向
  6. java 程序的初始化顺序是怎样的?
  7. php post 302,php – Laravel 5.2 Post 302重定向到GET
  8. 最新基于高德地图的android进阶开发(1)获取 Map API Key
  9. java tiles类似_java – 更好地替代Apache Tiles
  10. linux oracle 分号引起大错误
  11. ansys17.0安装教程
  12. TRNSYS与CONTAM3.4耦合过程
  13. C语言面向对象(下):驱动设计技巧
  14. 笔记本计算机拆开视频,神州笔记本拆卸全过程图解
  15. JavaScript的escape和encodeURI
  16. word页码设置一些问题
  17. 18岁误入网站_是市场驱动的技术领先现代医学误入歧途
  18. OOP 三大特征之多态(Polymorphism)
  19. 【Day8.3】黄河第一桥
  20. 【TCAX相关】‍用AvsPmod预览tcas特效字幕

热门文章

  1. 【5G系列】MICO学习总结(1)
  2. C# 电脑麦克风录音
  3. 百事可乐的营销---“情怀”
  4. Linux Bash漏洞最新最全的修复方法
  5. 注解以及Java中常用注解使用
  6. Java Web之Servlet的三大常用作用域对象及其使用方法
  7. 嵌入式软件工程师笔试面试指南-Linux驱动
  8. 科普篇:TD-LTE
  9. idea分支合并到主干
  10. NI无线通信与射频技术学习资源汇总