zk listbox内容发生变化触发事件_埋点全解4:页面浏览事件全埋点

b783059557d3fd8a940802c80f96b5bb.png

1、原理概述
本章主要介绍页面浏览事件($AppViewScreen)全埋点 的实现原理。在介绍具体的实现原理之前,我们先介绍 UIViewController 生命周期相关的内容,然后再介绍 iOS 的“黑魔法”Method Swizzling。

(1)UIViewController 生命周期
众所周知,每一个 UIViewController 都管理着一个由多 个视图组成的树形结构,其中根视图保存在 UIViewCon- troller 的 view 属性中。UIViewController 会懒加载它所 管理的视图集,直到第一次访问 view 属性时,才会去加 载或者创建 UIViewController 的视图集。

有以下几种常用的方式加载或者创建 UIViewController 的视图集:
•使用 Storyboard

•使用 Nib 文件

•使用代码,即重写 - loadView
以上这些方法,最终都会创建出合适的根视图并保存在
UIViewController 的 view 属性中,这是 UIViewControl-
ler 生命周期的第一步。当 UIViewController 的根视图需
要展示在页面上时,会调用 - viewDidLoad 方法。在这个
方法中,我们可以做一些对象初始化相关的工作。
需要注意的是:此时,视图的 bounds 还没有确定。对于使用代码创建视图,- viewDidLoad 方法会在 -loadView 方法调用结束之后运行;如果使用的是 Stroyboard 或者 Nib 文 件 创 建 视 图,- viewDidLoad 方 法 则 会 在 - awakeFromNib 方法之后调用。

当 UIViewController 的视图在屏幕上的显示状态发生变 化时,UIViewController 会自动回调一些方法,确保子类 能够响应到这些变化。如下图所示,它展示了 UIViewController 在不同的显示状态时会回调不同的方法。

aa62dccddfb792b95c7dde1ab88557cd.png

图 UIViewController 不同状态的方法调用

在 UIViewController 被销毁之前,还会回调 - dealloc 方 法,我们一般通过重写这个方法来主动释放不能被 ARC 自动释放的资源。
我们现在对UIViewController的整个生命周期有了一些基本了解。那么,我们如何去实现页面浏览事件 ( $AppViewScreen 事件)的全埋点呢?

通过 UIViewController 的生命周期可知,当执行到
- viewDidAppear: 方法时,表示视图已经在屏幕上渲染 完成,也即页面已经显示出来了,正等待用户进行下一步 操作。因此,- viewDidAppear: 方法就是我们触发页面浏览事件的最佳时机。如果想要实现页面浏览事件的全埋点, 需要使用 iOS 的“黑魔法”Method Swizzling 相关的技术。

关于 iOS 应用程序状态更详细的内容,及 iOS 更多内容,可点击下方白皮书了解

《iOS 全埋点技术白皮书》 | 神策图书馆 | 神策数据​www.sensorsdata.cn
b53b901038691ca9c015be73678e05fc.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值