相关问题
HarmonyOS 统一UI操作如何创建例如页面打开埋点、关闭埋点
1268浏览 • 1回复 待解决
HarmonyOS 无埋点(全埋点)如何实现
753浏览 • 1回复 待解决
HarmonyOS 埋点方案如何实现
888浏览 • 1回复 待解决
HarmonyOS Next埋点方案如何实现
750浏览 • 1回复 待解决
如何在可滚动的容器组件中实现曝光埋点
2478浏览 • 1回复 待解决
HarmonyOS 点击埋点和曝光埋点的最佳实践是什么?
1532浏览 • 1回复 待解决
HarmonyOS 全埋点方案
1076浏览 • 1回复 待解决
HarmonyOS埋点怎么添加
741浏览 • 1回复 待解决
HarmonyOS 无埋点方案
782浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何通过鸿蒙UI构建简易点赞功能组件?
873浏览 • 1回复 待解决
分析埋点无法正常上报
2640浏览 • 1回复 待解决
HarmonyOS RelativeContainer组件缺陷无法实现ui效果
674浏览 • 1回复 待解决
HarmonyOS 如何定义通用的UI控制类通过描述状态加载实现UI组件
703浏览 • 1回复 待解决
HarmonyOS 关于页面埋点方案的咨询
1195浏览 • 1回复 待解决
HarmonyOS UI实现咨询
512浏览 • 1回复 待解决
HarmonyOS UI组件需要加阴影要怎么实现
706浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何开发基于JS UI的鸿蒙卡片?
769浏览 • 1回复 待解决
HarmonyOS GridView实现键盘UI
669浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙UI开发中如何实现带有交互功能的点赞按钮?
883浏览 • 1回复 待解决
HarmonyOS 针对tabBar的切换事件埋点监听
731浏览 • 1回复 待解决
鸿蒙里如果要实现自动全埋点,有什么好的方案?
1027浏览 • 0回复 待解决
HarmonyOS UI组件使用问题
786浏览 • 1回复 待解决
HarmonyOS 的UI组件里面有实现类型popupwindow的组件吗?
453浏览 • 1回复 待解决
HarmonyOS Text 组件 UI样式
667浏览 • 1回复 待解决
HarmonyOS 如何在非UI组件中实现CustomDialogController弹窗
786浏览 • 1回复 待解决
组件埋点基本介绍
组件埋点是一种在前端开发中常用的数据采集方法,它通过在页面中的组件(例如按钮、输入框、下拉框等)上添加跟踪代码,来收集用户的操作行为数据。这些数据可以帮助开发人员分析用户的使用习惯、行为路径等信息,从而优化产品的设计和功能。
组件埋点的实现方式通常包括以下几个步骤:
1. 确定需要收集的数据类型和指标,例如点击次数、输入内容、页面停留时间等。
2. 在页面中的组件上添加跟踪代码,通常是在组件的事件处理函数中调用一个统一的数据采集函数。
3. 将采集到的数据发送到后端服务器进行存储和分析。
4. 对采集到的数据进行分析和处理,以便于开发人员进行产品优化和改进。
本文主要介绍如何在鸿蒙中实现埋点数据的收集,上报展示数据方式为反显到屏幕中,如下图所示,可根据实际进行调整
常见场景实现
按钮点击:全局监听用户在页面中触发的点击事件。
点击事件分为手势事件和click事件,通过UIObserver.on('willClick')方法注册点击事件和手势事件监听,后续页面中所有的onClick与gesture都可以监听到,这个监听在同一个UIContext下是全局生效的;在用户触发点击操作后,会回调返回当前点击元素的FrameNode对象和event事件对象,通过FrameNode可以获取到当前组件的相关信息,如ID、父子节点、组件大小等等,详情请见官网文档FrameNode。用户可根据自己实际需要获取对应信息上报,当前案例仅获取ID与相对屏幕的位置为例子。
下面代码中registerClickAndGestureListener可以同时注册手势监听与点击事件监听,非必填参数callBack用于处理用户一些自定义埋点逻辑,会在回调函数中带出当前的事件对象event和触发该事件的FrameNode节点,具体请看下面实现:
在页面中使用,需要注意的在下面代码中按钮上的id属性为可选配置项,主要目的是用于标识具体点击的是哪个组件,自己定义的id更明显,如不想每一个组件都配置,可以使用FrameNode.getUniqueId接口获取系统分配的ID也可以。
页面滚动:记录用户页面滚动的位置和时间。
页面滚动监听调用UIObserver.on('scrollEvent')实现,记录滚动开始时间和结束时间,同时在滚动结束的时候显示对应的滚动距离offset,实现代码如下。
ps:当前实现的监听是页面中任何一个滚动组件List、Scroll等只要触发了滚动都该监听都能识别到,并且可以在回调的info中拿到滚动容器组件的ID,如需要精准监听对应的滚动组件可以参考官网示例。
页面中注册
路由跳转:记录用户跳转页面,统计页面停留时间
路由跳转监听调用UIObserver.on('navDestinationSwitch')实现,代码如下:
这里仅介绍navigation路由,router路由监听实现使用UIObserver.on('routerPageUpdate')。
页面中注册,页面中注册的时候传递自己的处理逻辑,获取页面跳转时间统计页面停留时长。
实现效果
FAQ
Q:Listener监听是根据context范围来的吗?用应用级的context注册监听是应用级监听?
A:Listener所有监听都是根据UIContext范围全局生效的,因为使用必须与UIContext强绑定,所以在首页的aboutappear里面实现的注册。
Q:手势事件和click事件如何区分监听?
A:当前提供的UIObserver.on('willClick')方法可以同时监听手势事件和click事件,只是回调方法中带出来的事件对象参数不同(手势事件带出来参数为GestureEvent,点击事件带出参数为ClickEvent),其它没什么区别。