一、数据埋点
数据埋点是一种在软件应用中收集用户行为数据的技术手段。通过在应用的特定位置插入代码,记录用户的操作行为、系统状态等信息,并将这些数据发送到服务器进行分析。数据埋点可以帮助开发者了解用户如何使用应用、哪些功能受欢迎、哪些地方存在问题,从而为产品优化和决策提供依据。
二、使用场景
1. 用户行为分析
了解用户在应用中的操作路径,例如用户从哪个页面进入,经过哪些步骤到达目标页面,哪些页面被频繁访问,哪些功能被频繁使用等。这有助于优化应用的导航结构和功能布局。
分析用户的交互行为,如点击、滑动、长按等操作的频率和分布,以改进界面设计和交互体验。
监测用户的留存率、活跃度等指标,评估应用的整体用户体验和吸引力。
2. 常见的场景
例如: 在我们刷抖音视频时,在一个视频页停留的时间比较长,抖音就会给你推好多类似的这种视频,这就用到了数据埋点。
3. 具体实现
实现步骤:
- 参考接口,定义上报数据类型
例如:
export interface TimeItem {
questionId: string
startTime: number
endTime: number
}
- 封装埋点工具 使用埋点工具
import { TimeItem } from '../../models'
import { http } from './Http'
import { logger } from './Logger'
class Tracking {
list: TimeItem[] = []
record(startTime: number, endTime: number, questionId: string) {
this.list.push({
startTime,
endTime,
questionId
})
logger.debug('Tracking', JSON.stringify(this.list))
}
async report() {
await http.request<null>({ url: 'time/tracking', method: 'post', data: { timeList: this.list } })
this.list = []
}
}
export const tracking = new Tracking()
- 完成记录和上报(离开页面上报)
startTime: number = Date.now()
onPageShow(): void {
this.startTime = Date.now()
}
onPageHide(): void {
tracking.record(this.startTime, Date.now(), this.item.id)
tracking.report()
}
小提示:
用户频繁的进出页面,这个上报请求会频繁的发送,服务端压力很大怎么优化?
可以积累上报数据数到N条后触发上报条件,但目前数据是在应用内存中,退出或强杀后将销毁。
需要记录的同时存储起来,应用启动的时候(或者登录成功的时候)去上报一次
总结
埋点是在软件或应用程序的关键位置(如用户操作、事件触发、页面访问等)插入代码,以收集用户行为和应用程序性能数据的技术手段。