iOS全埋点解决方案-APP和H5打通】的更多相关文章

前言 ​ 所谓的 APP 和 H5 打通,是指 H5 集成 JavaScript 数据采集 SDK 后,H5 触发的事件不直接同步给服务器,而是先发给 APP 端的数据采集 SDK,经过 APP 端数据采集 SDK 二次加工处理后存入本地缓存再进行同步. 一.App 与 H5 打通原因 1.1 数据丢失率 ​ APP 端采集数据的丢失率一般在 1% 左右,而 H5 采集数据的丢失率一般在 5% 左右(主要是因为缓存,网络或切换界面等原因).因此,如果 APP 与 H5 打通,H5所有事件都可以先…
前言 在 $AppClick 事件采集中,还有两个比较特殊的控件: UITableView •UICollectionView 这两个控件的点击事件,一般指的是点击 UITableViewCell 和 UICollectionViewCell.而 UITableViewCell 和 UICollec…
前言 ​ 我们使用"事件模型( Event 模型)"来描述用户的各种行为,事件模型包括事件( Event )和用户( User )两个核心实体.我们在描述用户行为时,往往只需要描述清楚几个要点,即可将整个行为描述清楚,要点 包括:是谁.什么时间.什么地点.以什么方式.干了什么.而事件( Event )和用户( User )这两个实体结合在一起就可以达到这一目的. Event 实体 一个完整的事件( Event ),包含如下的几个关键因素: Who:即参与这个事件的用户是谁. When:…
前言 ​ 通过应用程序退出事件,可以分析应用程序的平均使用时长:通过应用程序的启动事件,可以分析日活和新增.我们可以通过全埋点方式 SDK 实现应用程序的退出和启动事件. 一.全埋点的简介 ​ 目前.全埋点采集可以采集一下4个事件. 1.$AppEnd 事件:应用程序退出事件 2.$AppStart 事件:应用程序启动事件 3.$AppViewScreen 事件: 应用程序内界面预览事件,对于 iOS 来说就是切换不同的 UIViewController. 4.$AppClick 事件: 控件的…
前言 ​ 我们先了解 UIViewController 生命周期相关的内容和 iOS 的"黑魔法" Method Swizzling.然后再了解页面浏览事件($AppViewScreen)全埋点的实现原理 一.UIViewController 生命周期 ​ 众所周知,每一个 UIViewController 都管理着一个由多个视图组成的树形结构,其中根视图保存在 UIViewController 的 view 属性中.UIViewController 会懒加载它所管理的视图集,直到第一…
前言 ​ 我们主要介绍如何实现控件点击事件($AppClick)的全埋点.在介绍如何实现之前,我们需要先了解一下,在 UIKit 框架下,处理点击或拖动事件的 Target-Action 设计模式. 一. Target-Action ​ Target-Action,也叫目标-动作模式,即当某个事件发生的时候,调用特定对象的特定方法. ​ 比如,在 LoginViewController 页面,有一个按钮,点击按钮时,会调用 LoginViewController 里的 - loginBtnOnC…
前言 ​ 随着科技以及业务的发展,手势的应用也越来越普及,因此对于数据采集,我们要考虑如果通过全埋点来实现手势的采集. 一.手势识别器 ​ 苹果为了降低开发者在手势事件处理方面的开发难度,定义了一个抽象类 UIGestureRecognizer 来协助开发者.UIGestureRecognizer 是具体手势识别器的抽象基类,它定义了一组可以为所有具体手势识别器配置的常见行为.它还可以通过设置委托(即实现了 UIGestureRecognizerDelegate 协议的对象),来支持对某些行为进…
前言 ​ 采集应用程序奔溃信息,主要分为以下两种场景: ​ NSException 异常 ​ Unix 信号异常 一.NSException 异常 ​ NSException 异常是 Objective-C 代码抛出的异常.在 iOS 应用程序中,最常见就是通过 @throw 抛出的异常.比如,常见的数组越界访问异常. 1.1 捕获 NSException ​ 我们可以通过 NSSetUNcaughtExceptionHandle 函数来全局设置异常处理函数,然后手机异常堆栈信息并触发响应的事件…
前言 ​ SDK 需要把事件数据缓冲到本地,待符合一定策略再去同步数据. 一.数据存储策略 ​ 在 iOS 应用程序中,从 "数据缓冲在哪里" 这个纬度看,缓冲一般分两种类型. 内存缓冲 磁盘缓冲 ​ 内存缓冲是将数据缓冲在内存中,供应用程序直接读取和使用.优点是读取速度快.缺点是由于内存资源有限,应用程序在系统中申请的内存,会随着应用生命周期结束而被释放,会导致内存中的数据丢失,因此将事件数据缓冲到内存中不是最佳选择. ​ 磁盘缓冲是将数据缓冲到磁盘空间中,其特点正好和磁盘缓冲相反.…
抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15% 原创 Leo 字节跳动技术团队 2019-08-09 https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q   背景 启动是App给用户的第一印象,对用户体验至关重要.抖音的业务迭代迅速,如果放任不管,启动速度会一点点劣化.为此抖音iOS客户端团队做了大量优化工作,除了传统的修改业务代码方式,我们还做了些开拓性的探索,发现修改代码在二进制文件的布局可以提高启动性能,方案落地后在抖…