aop的原理是什么

iOS自动化埋点探索
https://mp.weixin.qq.com/s/u-HmmrSAgtER1N2pKxCm0A

问: 如果我只想跟踪某三个viewcontroler
答: 可以在plist中设置要跟踪的vc

问: 通过什么hook?
答: 写一个uicontrol category, 不需要引入, 重写load方法, 通过method swizzling, 动态交换方法, 然后跟踪sendAction to forEvent

问: 如果我要hook所有的按钮点击事件, 怎么做?
答: 所有的按钮被点击时,都会触发UIApplication的sendAction方法,我们hook这个方法,即可拦截所有按钮的点击事件。

问: 全自动无埋点(全埋点)有什么不好的地方?
答: 无埋点方案由于全部数据都收集,造成数据量巨大,这给服务器和网络传输带来较大负载,另外数据清洗难度也非常大

hook 的方法

在Objective-C中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。

利用Objective-C的动态特性,可以实现在运行时偷换selector对应的方法实现,达到给方法hook的目的。

每个类都有一个方法列表,存放着selector的名字和方法实现的映射关系。IMP有点类似函数指针,指向具体的Method实现。

https://blog.csdn.net/chenxi506343891/article/details/72832678

  • 用 method_exchangeImplementations 方法来交换2个方法中的IMP,
  • 用 class_replaceMethod 方法来修改类,
  • 用 method_setImplementation 方法来直接设置某个方法的IMP,

上篇文章 中简单提了一下,SDK 在实现对基本事件数据的自动收集时,主要 hook的方法分为 3 类:

  • 系统类的方法
  • 系统类的 Delegate 方法
  • 自定义类的方法

各类点击事件的拦截
对于 SDK 来说,收集用户的所有点击的行为数据是非常重要的一部分。另外,这部分数据对于用户行为分析以及统计路径转化率时,都是至关重要的。

那么 SDK 对于用户的各类点击事件的收集,主要 hook 了如下的一些系统类的方法:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,824评论 0 9
  • AOP简介 AOP全名为 Aspect Oriented Programming- 面向切面编程。AOP是OOP(...
    lyuf阅读 803评论 0 0
  • 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的...
    西木阅读 30,651评论 33 466
  • 继上Runtime梳理(四) 通过前面的学习,我们了解到Objective-C的动态特性:Objective-C不...
    小名一峰阅读 782评论 0 3
  • 一阵北风 刮落了微黄的叶子, 一夜深秋, 骨子里的烦恼无声。 打个寒颤, 迈出回家的步伐 找一件衣服, 用力的裹着...
    凌风寒墨阅读 254评论 2 6