App埋点实现原理

现在App埋点一般采用talkingdata或者友盟,如果要我们自己实现埋点功能,该怎么做呢?个人觉得一个好的埋点库应该具有如下功能:

1、支持实时上报和非实时上报。

实时上报即立马上报数据;非实时上报即上报数据不立马上报,存储到本地文件,在合适的时机再上报。

2、实时上报支持内存缓存及上报频率。

为了减少频繁发起网络请求的次数和流量的浪费,实时上报数据内存缓存支持设定最大缓存个数和最大缓存大小,当超过这两个阈值之一时,就直接把内存缓存的数据全部上报。支持上报频率,比如1分钟上报一次。

3、非实时上报支持磁盘缓存和上报频率。

因为非实时上报不要求立马上报,所以要把数据存储到本地,存储方式可以选用json、archive、数据库等;支持上报频率,比如半小时上报一次。

4、上报时机。

实时上报可以在调用上报接口、定时器扫描、应用程序退出、程序进后台时进行上报;非实时上报接口可以在定时器扫描、应用程序退出、程序进后台时进行上报。

5、上报数据需要压缩后上报。

6、上报规则支持后端可配。

后端可以根据客户端网络类型下发不同的上报参数,比如调整最大缓存个数、上报频率等。

7、配合aspect来上报,实现代码无侵入性。

上报最好做到跟业务无关,配合使用aspect来实现。

8、如何实现无痕埋点?

iOS无埋点数据SDK实践之路

你可能感兴趣的:(App埋点实现原理)