资讯专栏INFORMATION COLUMN

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

nanfeiyan / 2185人阅读

摘要:目前埋点分为两种方式,有码与无码埋点。本文主要介绍无码埋点的技术实现。无码埋点的实现流程可视化视图圈选,在页面上会出现浮动的圆圈,拖动圆圈至想配置事件的控件上,将会弹出输入事件的弹框。


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

无码埋点的实现流程

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

实现流程中的技术点

可视化视图圈选实现

自定义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相应的方法。

UIControl类型的控件hook – (void)sendAction:(SEL) to:(id)target forEvent:(UIEvent *)event

UIScrollView,UITextView,UITableView,UICollectionView 类型的控件,先hook -(void)setDelegate:(id)delegate 方法,然后再hook想要采集事件的代理方法,例如 textViewDidBeginEditing 、tableview:(UITableView )tableview didSelectRowAtIndexPath:(NSIndexPath )indexPath 等。

带手势事件的视图 hook -(void)addGestureRecognizer方法,并在方法实现中给手势对象添加新的target和action ,- (void)addTarget:(id)target action:(SEL)action。

总结

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

本文原创首发于Cobub官网博客,转载请注明出处!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/16832.html

相关文章

  • Cobub无码埋点关键技术实现

    摘要:目前埋点分为两种方式,有码与无码埋点。本文主要介绍无码埋点的技术实现。无码埋点的实现流程可视化视图圈选,在页面上会出现浮动的圆圈,拖动圆圈至想配置事件的控件上,将会弹出输入事件的弹框。 showImg(https://segmentfault.com/img/bVXMSS?w=900&h=500);随着大数据时代的到来,数据采集也已经变的越来越重要。前端埋点作为一个比较成熟的数据接入手...

    Y3G 评论0 收藏0
  • Cobub无码埋点关键技术实现

    摘要:目前埋点分为两种方式,有码与无码埋点。本文主要介绍无码埋点的技术实现。无码埋点的实现流程可视化视图圈选,在页面上会出现浮动的圆圈,拖动圆圈至想配置事件的控件上,将会弹出输入事件的弹框。 showImg(https://segmentfault.com/img/bVXMSS?w=900&h=500);随着大数据时代的到来,数据采集也已经变的越来越重要。前端埋点作为一个比较成熟的数据接入手...

    int64 评论0 收藏0
  • 病有所查,UCloud助力无码科技发动云上医疗数字引擎

    摘要:除此之外,无码科技还推出抽奖助手和等流量和工具产品。目前无码科技旗下用户数过亿,由医疗用户和非医疗用户构成。无码科技产品负责人邱岳介绍。此外,在高性能的支持下,无码科技在人工智能领域的技术得以不断推进。无症状新冠疫情要如何判断?家附近哪里有疫苗接种点接种疫苗有什么注意事项……新冠疫情爆发后,医疗小程序就诊问问上,关于新冠疫情的搜索量出现明显增长。就诊问问是无码科技旗下专注医疗健康搜索的小程序...

    Tecode 评论0 收藏0
  • C4J私有化小程序数据统计分析

    摘要:私有化私有化解决方案有效的防止了用户数据的泄露,为业务提供强有力的数据支撑,深度分析更容易,数据应用灵活更安全,定制化贴近业务。 线上流量红利逐渐消失的今天,产品的获客成本从几元,飙升到了现在的几百元,甚至上千元,流量大战悄然打响!而 微信社会中的小程序,凭借着离消费者一指之遥的距离,成为商家不被淘汰的制胜法宝 。2019年4月,开源的用户行为分析厂商Cobub推出全渠道的用户增长利器...

    Kaede 评论0 收藏0
  • 个数是如何用大数据做行为预测

    摘要:个数通过可视化埋点技术及大数据分析能力从用户属性渠道质量行业对比等维度对进行全面的统计分析。总的来说,在大数据行为预测的帮助下,运营者能够更及时更全面地了解用户,从而达到精细化运营的目的。 个数是个推旗下面向 APP 开发者提供数据统计分析的产品。个数通过可视化埋点技术及大数据分析能力从用户属性、渠道质量、行业对比等维度对 APP 进行全面的统计分析。 个数不仅可以及时统计用户的活跃、...

    rollback 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<