本文主要是介绍浅浅写一下对埋点的理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
做了一年监控,浅记一下心得体会,个人见解不一定对。
埋点分事件埋点和性能埋点。
事件埋点用于记录某个事件的发生,比如页面执行到某个生命周期,比如用户/应用执行了什么操作,因为什么原因发生了错误。事件埋点可以用于统计和分析页面/功能的展现,记录的错误便于在线上发现和分析问题,对前端更友好。
拦截事件需要做到对原有流程的侵入性不强,易于扩展。方式有:
- 给事件流程(被监听方)所属的类设置lifeCycleDelegate或interceptor之类的,提供一个对外的注册接口,然后埋点Manager类(监听方)注册delegate或interceptor。在事件发生时便可以遍历通知到监听方
- 将监听方通过objc_setAssociatedObject动态添加属性,添加到被监听方上。在任何需要被监听方信息的时候将监听方调出来就能拿到记录的所有数据
- NSNotification,通知,和第一点原理相似,适合简单不扩展的情况
- 通过addObserver或KVO监听某个类的某个方法
- hook。记得调用原方法
性能埋点是基于事件埋点的二次处理,很多时候是事件间的时间差,比如WebView的性能timing,或者自定义事件的duration。
在埋点中可以针对事件或性能携带一些其他的属性,用于识别属于什么页面/场景,处于什么状态等。
扩展阅读:
- 前端埋点与监控方案 (baidu.com) (随便搜的,这篇感觉基础比较全)
- iOS开发之OC篇(13)—— Protocol(协议)、Delegate(代理)_xcode 定义protocol-CSDN博客
- iOS中几种hook代码的方法_ios hock系统方法-CSDN博客
这篇关于浅浅写一下对埋点的理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!