现在App埋点一般采用talkingdata或者友盟,如果要我们自己实现埋点功能,该怎么做呢?个人觉得一个好的埋点库应该具有如下功能:
1、支持实时上报和非实时上报。
实时上报即立马上报数据;非实时上报即上报数据不立马上报,存储到本地文件,在合适的时机再上报。
2、实时上报支持内存缓存及上报频率。
为了减少频繁发起网络请求的次数和流量的浪费,实时上报数据内存缓存支持设定最大缓存个数和最大缓存大小,当超过这两个阈值之一时,就直接把内存缓存的数据全部上报。支持上报频率,比如1分钟上报一次。
3、非实时上报支持磁盘缓存和上报频率。
因为非实时上报不要求立马上报,所以要把数据存储到本地,存储方式可以选用json、archive、数据库等;支持上报频率,比如半小时上报一次。
4、上报时机。
实时上报可以在调用上报接口、定时器扫描、应用程序退出、程序进后台时进行上报;非实时上报接口可以在定时器扫描、应用程序退出、程序进后台时进行上报。
5、上报数据需要压缩后上报。
6、上报规则支持后端可配。
后端可以根据客户端网络类型下发不同的上报参数,比如调整最大缓存个数、上报频率等。
7、配合aspect来上报,实现代码无侵入性。
上报最好做到跟业务无关,配合使用aspect来实现。
8、如何实现无痕埋点?
网友评论