美文网首页iOS 开发继续加油
iOS学习笔记 无侵入的埋点方案

iOS学习笔记 无侵入的埋点方案

作者: DrunkenMouse | 来源:发表于2019-03-31 21:10 被阅读181次

埋点:用于了解用户使用App的行为 和 降低分析线上问题的难度。

目前常见的埋点方式:代码埋点、可视化埋点与无埋点(全埋点)。

  • 代码埋点 通过手写代码的方式来埋点,可以很精确的在需要埋点的地方加上埋点,很方便的记录当前环境的变量值,方便调试并跟踪埋点内容,但存在开发量大,并且埋点代码到处有所以难维护。

  • 可视化埋点,将埋点增加和修改的工作可视化,提升了增加和维护埋点的体验。

  • 无埋点,确切说是“全埋点”。埋点代码不会出现在业务代码中,容易管理和维护。但是埋点成本高,后期的解析也比较复杂,再加上view_path的不确定性。所以,只适用于大量通用的埋点需求,能够节省大量的开发和维护成本。

其中,可视化埋点与无埋点属于无侵入的埋点方案,因为不需要在工程代码中写入埋点代码。所以,采用这样的无侵入埋点方案,可以做到埋点被统一维护,又可以实现埋点和工程代码的解耦。

运行时方法替换方式进行埋点

常见的三种埋点,就是对页面进入次数、页面停留时间、点击事件的埋点。对于这三种情况,可以通过运行时方法替换技术来插入埋点代码,以实现无侵入的埋点方法。

具体方法:先写一个运行时方法替换的类ADHook,再加上替换的方法。方法利用运行时method_exchangimplementations接口将方法的实现进行了交换,原方法调用时就会被hook住,从而去执行指定的方法。

页面进入次数、页面停留时间都需要对UIViewController生命周期进行埋点。可以创建一个UIViewController的Category,通过替换ViewWillAppear与ViewDidAppear来达到目的,在替换方法里增加埋点需求。

如何区别不同的UIViewController?

可以使用NSStringFromClass([self class])方法来获取类名,通过类名来区别不同的UIViewController。

对于点击事件也可以通过运行时方法替换的方式进行无侵入埋点。需要找到点击事件的方法sendAction:to:forEvent:,然后在+load()方法使用ADHook替换为自定义的方法。

和UIViewController生命周期埋点不同,UIButton在一个视图类中可能有多个不同的继承类,相同的UIButton的子类在不同视图类的埋点也要区别开。
简单说,UIButton不能根据类名来区分,因为多个视图可能用的同一个UIButton类。
所以需要通过“action 选择器名NSStringFromSelector(action)” +“视图类名NSStringFromClass([target class])”组合成一个唯一的标识。

事件唯一标识

如果想区分相同类在不同视图节点的情况。比如,一个页面的两个UIButton,这时候需要一个唯一标识来区分不同的事件。

寻找方法,就是尽可能找出元素的唯一性,然后以唯一性作为标志。而且要考虑到inserSubView:atIndex: 、removeFromSuperView等方法。

iOS高手课开发笔记

相关文章

  • iOS学习笔记 无侵入的埋点方案

    埋点:用于了解用户使用App的行为 和 降低分析线上问题的难度。 目前常见的埋点方式:代码埋点、可视化埋点与无埋点...

  • 戴铭(iOS开发课)读书笔记:09章节-无侵入埋点

    原文链接:无侵入的埋点方案如何实现? 前言: 原文中介绍了iOS开发常见的埋点方式:代码埋点、可视化埋点和无埋点。...

  • iOS 无侵入埋点方案

    分享一个无侵入埋点方案。 demo地址: https://github.com/AutoJiang/TrackDe...

  • iOS无侵入埋点方案

    在iOS项目开发中,我们要收集用户的行为信息以便对项目进行分析统计,就需要在代码中进行埋点统计。 一、通常的埋点方...

  • iOS 无侵入埋点方案

    使用无侵入埋点方案的好处就是能将埋点代码和业务代码解耦。 然而很多无侵入埋点都是hook系统的方式去,比如一些第三...

  • AOP无痕埋点技术

    使用AOP实现iOS应用内的埋点计数 - 简书 iOS用户行为追踪——无侵入埋点 - CSDN博客 iOS 无埋点...

  • iOS无痕埋点方案分享探究

    iOS无痕埋点方案分享探究 iOS无痕埋点方案分享探究

  • iOS 无侵入埋点方案探索

    GitHub项目地址 前言 最近业务需要加入一大批埋点统计事件,这个页面添加一点代码那个页面添加一点代码,各个页面...

  • iOS-无侵入的埋点方案

    前言 埋点统计在产品运营过程中对用户行为分析、产品前期的业务模式探索起着很重要的作用。常用的三种埋点方式主要包括手...

  • iOS无侵入埋点

    什么是埋点? 埋点是一种了解用户行为,分析用户行为,提高用户体验的一种方式。常见的解决方案有三种,代码埋点、可视化...

网友评论

    本文标题:iOS学习笔记 无侵入的埋点方案

    本文链接:https://www.haomeiwen.com/subject/iqoubqtx.html