cobub无码埋点关键技术的实现

author author     2022-09-25     529

关键词:

 

随着大数据时代的到来,数据采集也已经变的越来越重要。前端埋点作为一个比较成熟的数据接入手段被广泛应用着。目前埋点分为两种方式,有码与无码埋点。有码埋点比较容易理解,即调用SDK的API,在代码中插入埋点的相关代码,实现用户行为采集。由于我们在开发项目的时候,埋点都是手动的,每次业务需求的改变都要到处埋点,而无码埋点,即不需要手动插入代码,只需要前期进行相关配置,SDK自动采集用户行为。极大程度避免了因需求变更、埋点错误等原因导致的重新埋点繁复工作。本文主要介绍无码埋点的技术实现

 

 一、无码埋点的实现流程 

技术分享
  • 可视化视图圈选,在页面上会出现浮动的圆圈,拖动圆圈至想配置事件的控件上,将会弹出输入事件的弹框。
  • 在上一步的弹框中输入自定义的事件名称,名称将会和视图的viewPath绑定起来。viewPath是视图的唯一标识,在下文中将详细讲解。
  • 用户点击了控件,判断控件是否绑定过事件,如绑定则进行事件上传。

 

 二、实现流程中的技术点 

可视化视图圈选

实现自定义UIWindow的子类,当做悬浮小圆圈,添加UIPanGestureRecognizer手势,根据手势的位移,设置悬浮框的位移。手势停止时获取悬浮窗中心点的坐标。遍历主window上的子视图,找到包含上述悬浮窗中心点且能响应用户交互的最里层视图,即为用户可以圈选的视图。

参考iOS控件的消息传递链,有个核心方法。UIView hitTest:(CGPoint)point withEvent:(UIEvent *)event。此API自动遍历子视图,找到包含point的视图,event传nil。由于event参数是nil,最终找到的视图并不一定是能响应用户手势的视图,如果不能响应则遍历其父视图,直到找到能响应用户行为的视图。

圈选视图绑定事件

视图唯一标识viewPath生成,上述步骤已经拿到了圈选的视图。如何确定视图的viewPath也是重点。viewPath需要整个应用唯一,才可以区别不同的事件。由于是无码,所以只能从视图本身的属性去分析。我们可以把App的视图结构理解成树的概念,树的根节点是UIWindow,树的枝干由UIViewController和UIView组成,叶子节点都是UIView。那么从根节点到叶子节点的路径可以看做是唯一的。也就是视图的viewPath。下面介绍下实现的逻辑,viewPath由两部分组成,第一部分是节点路径,另一部分是与之对应的节点index。节点路径是由每个节点的Class拼接而成,节点index,就是节点在父节点中的下标,比如子视图在父视图的subviews数组中的下标。

下图是遍历节点的逻辑图。

技术分享

计算节点的index,这个步骤,有种特殊的视图需要注意,可复用视图的index是跟数据源相关的,比如UITableViewCell,此类视图的index不能使用父视图的subviews的下标代替,应该使用数据源的下标代表,比如cell的indexPath.section:indexPath.row。下面给出一个简单视图和可复用视图的viewPath的例子。TestViewController-UIView-UIButton&0-0-0和TableViewController-UITableView-UITableViewCell&0-0-1:0。

如何检测用户触发了绑定了事件ID的视图也是重点,此处运用的核心技术是runtime中Method Swizzle。

下面介绍一下针对不同类型的控件,如何hook相应的方法。

  1. UIControl类型的控件hook  - (void)sendAction:(SEL) to:(id)target forEvent:(UIEvent *)event
  2. UIScrollView,UITextView,UITableView,UICollectionView 类型的控件,先hook  -(void)setDelegate:(id)delegate 方法,然后再hook想要采集事件的代理方法,例如 textViewDidBeginEditing 、tableview:(UITableView *)tableview didSelectRowAtIndexPath:(NSIndexPath *)indexPath 等。
  3. 带手势事件的视图 hook  -(void)addGestureRecognizer方法,并在方法实现中给手势对象添加新的target和action ,- (void)addTarget:(id)target action:(SEL)action。

 

 三、总结 

无码埋点的关键技术,就是以上分析的几点,首先通过可视化圈选拿到需要绑定事件视图,并生成唯一标识viewPath,通过hook系统控件的方法,拿到用户触发的视图,生成视图的viewPath与本地的事件列表比对,比对成功则上传viewPath对应的事件。

 

记一次与用户的亲密接触

...上介绍的埋点功能确实很强大,有码埋点、可视化埋点、无码埋点,而优云Web用的就是无码埋点方式。优云We 查看详情

记一次与用户的亲密接触

...上介绍的埋点功能确实很强大,有码埋点、可视化埋点、无码埋点,而优云Web用的就是无码埋点方式。优云We 查看详情

优云老王谈埋点:人生处处有埋点

...云Web产品在内测阶段便收到了用户的各种反馈,反复问我无码埋点是怎么做的。在此我专门与大家聊聊埋点以及各种实现方案的利弊。650)this.width=650;"src="http://s2.51cto.com/wyfs02/M02/89/EC/wKiom1ghiXGw-OJgAATeOrNMoFg149.jpg"style="height:auto;ve 查看详情

狐友ios客户端埋点的前世今生(代码片段)

...时间:14分钟零、简介本篇文章将结合狐友iOS客户端埋点的实践,给大家介绍不同的埋点实现方案及一些问题总结。主要包括以下内容:初步认识埋点概念及分类服务端埋点客户端埋点客户端埋点的实现全代码埋点实... 查看详情

android-全自动埋点方法论-下

...集的相关方法论。需要先说明几个基础的知识,这样对于无码采集的方法论理解就更清晰,这也是做一个事情分析的逻辑。每一个应用有一个Application,每一个Application有多个Activity,一个Activity下有一个PhoneWindow,一个PhoneWindow下... 查看详情

友盟埋点安卓技术点

参考技术A数据埋点让产品或运营等相关人员能按照具体的需求,定制性地统计较为复杂的用户数据。例如想要追踪用户的行为,观察页面相关点击数据,关键路径转化率,分析某个事件活动效果时,就需要事先进行数据埋点。... 查看详情

埋点技术:“呵呵,你在网上的一举一动,都在我眼皮子底下”

...题库、技术互助、简历模板。文末公众号领取1、什么是埋点埋点又称为事件追踪(EventTracking),指的是针对特定用户行为或流程事件进行捕获,处理和发送的相关技术及其实施过程。埋点为优化产品和运营决策... 查看详情

asm的基础使用android自动化埋点方案原理剖析

自动化埋点技术原理剖析前言一、参考资料二、自动化埋点实现效果三、自动化埋点实现步骤1.配置GradleTransForm2.Transform对象简单说明3.通过Transform对象遍历jar文件4.通过`MethodVisitor对class文件进行插桩4.1ASMBytecodeViewer分析字节码4.2... 查看详情

埋点的进化发展史

....weixin.qq.com/s/VSIQ9SuizaBo8KTCXQxZkQ一直以来,人们把大数据和埋点技术紧紧捆绑在一起,大数据时代也被称为埋点时代。技术发展,更新更快的无埋点技术横空出世。那么埋点技术是不是就此被判了死刑,无埋点就是万能的了?非也... 查看详情

网站统计功能的设计与实现

...绍网站统计功能的设计与实现。本文分为以下五个部分:埋点设计与实现页面引入数据接收数据入库统计分析 一、埋点设计与实现在JavaScript中,包含了很多对象,可以用于获取 查看详情

还在手动埋点么?out了!不到百行代码实现自动埋点

埋点是一个常见的需求,就是在函数里面上报一些信息。像一些性能的埋点,每个函数都要处理,很繁琐。能不能自动埋点呢?答案是可以的。埋点只是在函数里面插入了一段代码,这段代码不影响其他逻辑&#... 查看详情

无码系列-2-代码架构空想华为云技术分享

无码系列-2-代码架构空想 查看详情

移动应用如何埋点收集啥数据以便于统计分析?

...的问题,依然还是要从认清是什么开始:一、什么是数据埋点数据埋点让产品或运营等相关人员能按照具体的需求,定制性地统计较为复杂的用户数据。例如想要追踪用户的行为,观察页面相关点击数据,关键路径转化率,分析... 查看详情

个数是如何用大数据做行为预测的?

...APP开发者提供数据统计分析的产品。“个数”通过可视化埋点技术及大数据分析能力从用户属性、渠道质量、行业对比等维度对APP进行全面的统计分析。“个数”不仅可以及时统计用户的活跃、新增等,还可以分析卸载用户的成... 查看详情

超低技术门槛,运营人员也可以直接使用android可视化埋点

Android可视化埋点是Android全埋点的增强。开发者可以将App界面同步至DTM界面,并在DTM界面通过可视化点击的方式添加埋点事件。目前Android可视化埋点包含两种埋点方式:普通可视化埋点和按Tag模板埋点。相比于代码埋点&#... 查看详情

关于数据埋点,你需要知道的技术方案和规范流程

参考技术A埋点是数据采集的专用术语,在数据驱动型业务中,如营销策略、产品迭代、业务分析、用户画像等,都依赖于数据提供决策支持,希望通过数据来捕捉特定的用户行为,如按钮点击量、阅读时长等统计信息。因此,... 查看详情

页面浏览访问路径报告在 COBUB RAZOR 中始终显示“无数据”

】页面浏览访问路径报告在COBUBRAZOR中始终显示“无数据”【英文标题】:Pageviewvisitpathreportalwaysshow"nodata"inCOBUBRAZOR【发布时间】:2014-01-1613:15:25【问题描述】:我在我的应用程序中包含了cobubrazorSDK,它运行良好,接受浏... 查看详情

埋点的详细介绍与理解

...载请联系作者获得授权,非商业转载请注明出处。所谓“埋点”,是数据采集领域(尤其是用户行为数据采集领域)的术语,指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。埋点的技术实质,是... 查看详情