HarmonyOS鸿蒙Next中页面的曝光数据上报怎么实现呢?
HarmonyOS鸿蒙Next中页面的曝光数据上报怎么实现呢? 就是某个页面或者组件,要求曝光500ms 后进行数据上报,不够 500ms 就不上报
3 回复
思路就是进去展示了就开始进行上报,但是加个延时 500ms 同时当你这个页面或者组件不在前台展示了,就马上去打断那些延时执行的上报任务,打断成功就是不够 500ms 曝光,否则就是够了成功上报上去了。
下面是项目实际使用的例子完整代码示例:
import { Logger } from "lib_logger";
import { ReportData } from "lib_report";
/**
* @文件名称: EventOperationReportUtil.ets
* @路径: entry/src/main/ets/event_operations
* @作者: 魔眼天王
* @创建时间: 2025/12/11 10:47
* @描述: 给五维打分活动页用的数据上报工具类
*/
class EventOperationReportUtil {
//上报和曝光存储倒计时对象id的
private exposureTimeMap: Map<string, number> = new Map();
/**
* 开始曝光倒计时
* @param elementId 元素唯一标识 /一般也用于当str1用
* @param reportKey 上报使用的key
* @param str2
* @param int1
* @param delayTime 曝光时间 默认500ms 不改不用传
*/
startExposureCountdown(elementId: string, reportKey: string, str2?: string, int1?: number,
delayTime: number = 500): void {
Logger.i('新数据上报', "startExposureCountdown-->elementId: " + elementId + " reportKey: " + reportKey)
this.exposureTimeMap.set(elementId, setTimeout(() => {
this.exposureReport(elementId, reportKey, str2, int1)
this.exposureTimeMap.delete(elementId)
}, delayTime))
}
/**
* 曝光上报
* @param elementId
*/
private exposureReport(elementId: string, reportKey: string, str2?: string, int1?: number) {
Logger.i("新数据上报",
"homeExposureReport: elementId: " + elementId + "\nreportKey: " + reportKey + "\nint1: " + int1)
const reportData = new ReportData(reportKey);
reportData.setStr1(elementId);
if (str2) {
reportData.setStr2(str2);
}
if (int1) {
reportData.setInt1(int1)
}
reportData.send();
}
/**
* 中途取消一个倒计时
* @param elementId 唯一标识id 或者默认str1
*/
cancelExposureCountdown(elementId: string) {
const timerId = this.exposureTimeMap.get(elementId)
if (timerId) {
this.exposureTimeMap.delete(elementId)
clearTimeout(timerId)
}
}
/**
* 点击数据上报
* @param elementId str1或者是存储用的唯一key
* @param reportKey 曝光key
* @param str2
* @param int1
* @param int2
*/
clickExposureReport(elementId: string, reportKey: string, str2: string, int1?: number, mid?: string,ugcId?:string) {
const reportData = new ReportData(reportKey);
Logger.i("新数据上报",
"clickExposureReport: elementId: " + elementId + "\nreportKey: " + reportKey + "\nint1: " + int1 +
"mid: " + mid)
reportData.setStr1(elementId);
reportData.setStr2(str2);
reportData
if (int1) {
reportData.setInt1(int1)
}
if (mid) {
reportData.setMid(mid)
}
if (ugcId) {
reportData.setUgcId(ugcId)
}
reportData.send()
}
}
//导出的对象引用
export const eventOperationReportUtil = new EventOperationReportUtil
更多关于HarmonyOS鸿蒙Next中页面的曝光数据上报怎么实现呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,页面曝光数据上报可通过页面生命周期回调结合自定义打点方法实现。主要使用onPageShow生命周期函数来触发曝光事件。当页面进入前台时,系统会调用此回调,开发者可在此处执行数据上报逻辑。上报的具体数据内容(如页面路径、时间戳等)需由开发者根据业务需求自行封装,并通过网络请求模块发送至指定服务器。


