解构amp项目 临时记录.md 3.2 KB

#灵感

amp 开始和结束事件相关,官方文档参考链接:

https://amplitude.com/docs/data/sources/instrument-track-sessions

发送事件接口

![[Pasted image 20250122170732.png]]

然后,最终会调用这个接口

![[Pasted image 20250122170843.png]]

这个接口,最终指向的是,保存Event事件的相关接口,跟当前的数据中台机制,是一致的:在发送之前,

![[Pasted image 20250122170953.png]]

其中saveEvent中,会包含数据库相关,添加

![[Pasted image 20250122171140.png]]

sqlLite保存相关

![[Pasted image 20250122175313.png]]

开始和结束事件名

![[Pasted image 20250122175939.png]]

这是开始一个,新开始事件的接口

![[Pasted image 20250122182017.png]]

外部,再做了一层封装

![[Pasted image 20250122182257.png]]

这里的设置,是跟开始和结束事件,时间区间挂钩

![[Pasted image 20250123113236.png]]

可以看到,安卓版本,大于ICE_CREAM_SANDWICH的时候,就已经是注册,和设置为true了

![[Pasted image 20250123113648.png]]

这是一个很旧的安卓版本,对应Unity的API Level是 14

![[Pasted image 20250123113805.png]]

而当前Unity工程打包,最低版本是API Level 22

![[Pasted image 20250123113924.png]]

![[Pasted image 20250123114011.png]]

所以,这个布尔,默认判断为true即可,然后基于这个布尔的,是可以用来,设置最小时间间隔,三元运算符

![[Pasted image 20250123114247.png]]

true和false,分别对应时间间隔是,5分钟和30分钟,因为上面可知,默认是设为true; 所以这里的开始和结束,时间间隔,是5分钟即可

![[Pasted image 20250123114415.png]]

这里的5分钟,和官方文档的设定,也是一致的

![[Pasted image 20250123162644.png]]

这是开启一个新Session事件的逻辑接口,可以看到,在开始一个新事件前,会发送一个结束事件; 开始和结束,会话事件id,是以时间戳,作为id的; 在开始新事件之前,会发送一个结束事件;

![[Pasted image 20250123142918.png]]

上述接口,还有一个刷新时间戳的相关接口,其中有包含,设置时间戳相关的接口

![[Pasted image 20250123160138.png]]

可以看到,也是调用了数据库相关,去设置sqlLite中,对应的时间戳key的value数据

![[Pasted image 20250123160518.png]]

这个数据,是sqlLite设定的,最大数据容量,目前是1000

![[Pasted image 20250123160945.png]]

如果容量超过这个范围,就要开始移除数据了

![[Pasted image 20250123161619.png]]

单次移除的数据条数 数量,是这样的计算逻辑:

![[Pasted image 20250123161657.png]]

其中,后面的数字常量是这个

![[Pasted image 20250123161723.png]]

其中,一个新的开始事件,是有俩地方,去调用

![[Pasted image 20250123162033.png]]

可以看到,在发送ampEvent事件的时候,就会触发判断,是否需要开启,一个新的开始事件,配合时间戳间隔等信息; 如果条件不满足,就刷新最新时间戳

![[Pasted image 20250123162128.png]]

还有一种情况,是从后台,切换到前台的时候,也会触发判断,是否满足条件,开启新的会话

![[Pasted image 20250123162351.png]]