3.4 KiB
#灵感
amp 安卓 项目源码解析:
https://github.com/amplitude/Amplitude-Android.git
amp 开始和结束事件相关,官方文档参考链接:
https://amplitude.com/docs/data/sources/instrument-track-sessions
amp缓存上报,逻辑解构:
https://inspire.sg.larksuite.com/docx/WRGfdHZA1oWm9BxDMAGlkTncgCf
发送事件接口
然后,最终会调用这个接口
这个接口,最终指向的是,保存Event事件的相关接口,跟当前的数据中台机制,是一致的:在发送之前,
其中saveEvent中,会包含数据库相关,添加
sqlLite保存相关
开始和结束事件名
这是开始一个,新开始事件的接口
外部,再做了一层封装
这里的设置,是跟开始和结束事件,时间区间挂钩
可以看到,安卓版本,大于ICE_CREAM_SANDWICH的时候,就已经是注册,和设置为true了
这是一个很旧的安卓版本,对应Unity的API Level是 14
而当前Unity工程打包,最低版本是API Level 22
所以,这个布尔,默认判断为true即可,然后基于这个布尔的,是可以用来,设置最小时间间隔,三元运算符
true和false,分别对应时间间隔是,5分钟和30分钟,因为上面可知,默认是设为true; 所以这里的开始和结束,时间间隔,是5分钟即可
这里的5分钟,和官方文档的设定,也是一致的
这是开启一个新Session事件的逻辑接口,可以看到,在开始一个新事件前,会发送一个结束事件; 开始和结束,会话事件id,是以时间戳,作为id的; 在开始新事件之前,会发送一个结束事件;
上述接口,还有一个刷新时间戳的相关接口,其中有包含,设置时间戳相关的接口
可以看到,也是调用了数据库相关,去设置sqlLite中,对应的时间戳key的value数据
这个数据,是sqlLite设定的,最大数据容量,目前是1000
如果容量超过这个范围,就要开始移除数据了
单次移除的数据条数 数量,是这样的计算逻辑:
其中,后面的数字常量是这个
其中,一个新的开始事件,是有俩地方,去调用
可以看到,在发送ampEvent事件的时候,就会触发判断,是否需要开启,一个新的开始事件,配合时间戳间隔等信息; 如果条件不满足,就刷新最新时间戳
还有一种情况,是从后台,切换到前台的时候,也会触发判断,是否满足条件,开启新的会话