13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

聊聊令人头疼的埋点

埋点,是指在应用中添加代码,以收集用户的操作行为和数据,以便后续进行数据分析和产品决策。这些代码通常被称为埋点代码,它们将事件(如点击、滚动、搜索等)和属性(如时间、位置、设备等)捕捉并发送到数据平台。通常情况下,这些数据用于分析用户行为、监控应用程序性能、改进产品功能等方面。

创新互联专注于企业成都全网营销、网站重做改版、苏州网站定制设计、自适应品牌网站建设、H5高端网站建设购物商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为苏州等各大城市提供网站开发制作服务。

转转 H5 采用的是手动埋点方式,App 内的页面通常需要添加各种埋点,以验证和辅助产品后续决策。今天就和大家聊聊令笔者头疼的埋点,也希望能加深您对埋点的理解~

以下部分内容、代码,来源于 chatGPT,如有错误,欢迎指出~

埋点内容

首先埋点内容一般会包含用户信息、页面信息、事件信息、访问信息等。

埋点方式

常见的埋点方式大体可以分为手动埋点、可视化埋点和全埋点三种。

埋点流程

埋点流程大体可以分为埋点触发、上报、校验以及上报到数据平台后的埋点清洗、过滤和分析,进而产出下一步决策。

  1. 埋点触发埋点触发大致分为自动触发和手动触发两种方式,上面提及的页面展现通常就是自动触发,当页面打开的时候,就自动上报了。但是像点击埋点就可以用手动触发的,只有当区域被真正点击时,才会进行上报。
  2. 埋点上报其中埋点上报又分为立即上报和延迟上报两种。立即上报的逻辑相对简单,在埋点事件触发时,就立即上报。但是缺点也很明显,就是上报的埋点量巨大,会给埋点服务造成巨大负担。延迟上报,就是将一段时间内的埋点,收集起来,然后一次性上报。这样无疑就会使上报的次数,急剧减少,减轻了埋点服务压力。但是其中又会涉及埋点上报去重、埋点触发时间校准(如果客户端时间不准怎么办?)等等其他问题,因此相对立即上报来说,延迟上报逻辑上要复杂一些。并且需要数据层面进行过滤、清洗。
  3. 埋点校验开发者手动添加了部分埋点,需求上线前需要进行验证,确保按照要求进行了上报,其中校验可以使用人工触发,抓包进行校验。也可以通过编写自动化脚本,模拟使用,进行校验。转转侧使用相关的后台,可以通过筛选相关用户、来源以及不同环境,实时接收相关的埋点,进行校验。
  4. 埋点分析埋点上报之后,数据平台就会拿到相关的埋点数据,对纷繁复杂的数据,进行过滤、清洗,得到产品需要的数据,然后产品就会对数据进行分析,有时可以发现一些问题,以及对后续决策产生影响。

埋点常见类型

埋点的触发通常与埋点的类型相关,接下来列举几种常见的埋点类型:

document.addEventListener('click', function(e) {
const target = e.target
// do something
}, true);
// 1. 监听页面滚动实现
const element = document.querySelector('.exposure-ele');

window.addEventListener('scroll', () => {
const elementPosition = element.getBoundingClientRect();
const windowPosition = {
top: 0,
left: 0,
bottom: window.innerHeight,
right: window.innerWidth
};

if (isElementInViewport(elementPosition, windowPosition)) {
console.log('Element is in viewport!');
} else {
console.log('Element is not in viewport!');
}
});

function isElementInViewport(elementPosition, windowPosition) {
return (
elementPosition.bottom > windowPosition.top &&
elementPosition.top < windowPosition.bottom &&
elementPosition.right > windowPosition.left &&
elementPosition.left < windowPosition.right
);
}

// 2. 使用 IntersectionObserver 实现
const element = document.querySelector('.exposure-ele');

const options = {
root: null,
rootMargin: '0px', // 设置视口四边延伸的范围,可以利用此做列表数据的提前加载
threshold: 0.5 // 区域与视口相交的阈值
};

const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log('Element has entered the viewport!');
} else {
console.log('Element has left the viewport!');
}
});
}, options);

observer.observe(element);

埋点发送方式

埋点发送即将埋点相关数据发送给数据平台,一般有接口方式、img 标签方式和 sendBeacon 三种方式。

const img = new Image()
img.src = 'https://example.com/log?xxx'

为了追求埋点请求尽可能小,大多采用的是 1*1 像素的透明 GIF 来上报,因为在各种图片格式下,这种相对较小。

document.addEventListener('visibilitychange', function logData() {
if (document.visibilityState === 'hidden') {
navigator.sendBeacon('/log', analyticsData)
}
})
  1. 发起一个同步 XMLHttpRequest 来发送数据
  2. 创建一个 img 元素并设置 src,大部分用户代理会延迟卸载(unload)文档以加载图像
  3. 创建一个几秒的 noop 循环

总结

以上从埋点内容、方式、流程、常见埋点的类型以及发送方式等方面,介绍了埋点相关的基础概念以及转转采取的方案,希望能对您有所帮助~

参考及引用


网站栏目:聊聊令人头疼的埋点
分享链接:http://cdbrznjsb.com/article/ccesjpj.html

其他资讯

让你的专属顾问为你服务