App 埋点 SDK 设计
适用平台 iOS / Android / HarmonyOS(可扩展至 Web、小程序)
事件采集 Tracker
自动采集
页面曝光,每次露出都触发,支持设置业务参数,页面停留时长,后端根据前端发送的页面曝光时间和后台停留时间计算,页面来源(a-b-c,c-b,b 的来源是 c)
登录/退出,不发送事件,只修改本地存储的 userId
App 生命周期(冷启动/热启动/退后台(杀掉),上滑并杀掉 app 会先走“退后台”回调方法,可在这里统计退出事件
按钮/图片/Cell 点击事件
手动采集
视图曝光(SDK 提供支持,然后根据需求手动去埋),支持 Banner轮播图/List列表 Item 曝光,曝光比例暂不考虑
常规业务埋点
数据处理 DataBuffer
数据内容
基础数据
基础属性(设备/版本/渠道/时间戳(客户端时间)/事件ID和类型/sessionId等),事件ID和sessionId 用于对埋点数据排序,需要在冷启动和切换用户时更新,退到后台达到指定时间再返回到 app 时也需要更新(app和小程序用5分钟,web用30分钟)
用户属性(匿名ID/用户ID),匿名ID用 UUID + KeyChain 实现,不同端实现方式相似
埋点平台ID,冷启动和登录后调接口拿,和匿名ID一起存在 Keychain
业务数据
公共属性(城市/影院)
业务属性(movieId/movieName),类型支持数字和字符串
H5 埋点数据
- App 内嵌 H5 的事件,由 App 来发(基础数据由 App 获取,H5 发送业务属性)
数据缓存
内存缓存(Queue)
本地缓存(SQLite 加密存储),冷启动时检查,删除 30 天前的数据(事务)
数据转移规则(50条/15秒/退后台(被杀)),防止数据因崩溃或断网丢失,避免内存暴涨和频繁读写文件,以及保障数据完整性,转移过程:专有Queue/异步/事务
上报 Uploader
上报频率控制(冷启动、定时发送(默认 15 秒)、条数触发(默认 100 条))
数据压缩(GZIP)
数据加密(AES)
数据格式(Protobuf)
上传流量控制(WIFI/5G)
全局配置 Config
API 远端控制(采集开关(API 按渠道控制开关)/每次上报数量/上传间隔/sessionId 更新时间),忽略接口返回的无效数据,0,“”
App 本地控制(是否输出日志/视图曝光比例/要忽略的页面(无意义的容器页面)等)
日志与调试
支持在 IDE 输出日志(SDK初始化结果/埋点数据记录/上报结果等),线上关掉
QA 环境支持抓包
其它
隐私合规方面需要产品去修改相关文档,说明采集数据用途
异常隔离,埋点功能出问题不能影响到 App 使用