最开始我以为,做这套埋点 SDK,就是把项目里那套已经跑通的代码抽出来就可以了,后来发现没那么简单。
真正麻烦的地方,是代码抽出去之后才出现的:
- 哪些能力应该放进SDK
- 哪些逻辑必须留在业务项目
- SDK 要不要负责埋点上报发送请求
- 日志到底是给开发看,还是给测试和产品验收使用
- 文档和版本号没跟上时,同事会不会直接集成失败
因为我后来确定了一件事:把埋点代码抽成 SDK,难点从来不是“把代码搬出去”,而是让它在接入、调试、验证、埋点上报这些环节里都真的可用。
一、为什么我会做这个 SDK
起因其实很简单,我手上有一个已经在线上跑通的 iOS APP 项目,里面已经有一套比较完整的埋点能力:
- 自动采集公共事件属性
- 自动补一组固定用户属性
- 统一时间格式
- 固定首次安装时间和安装时区
- 构建事件请求
- 构建用户属性请求
- 埋点上报发送请求
- 失败后自动重试
- 打调试日志
于是,领导就给我提出一个需求:让我封装一个埋点sdk,把固定用户属性和公共事件属性都封装在sdk中,让sdk内部自动获取这些属性值,iOS同事在其他项目中进行埋点上报的时候,就不需要再单独写一套固定用户属性和公共事件属性上报的代码了,直接使用sdk的能力就可以了。
所以,这次的目标很明确,是把这些已经被项目验证过的能力,封装成一个其他 App 项目也能对接的 SDK。 www.bdngx.com/tiexinzhina…