HarmonyOS鸿蒙Next中如何统计 ArkWeb 内每个网页的访问时长?

HarmonyOS鸿蒙Next中如何统计 ArkWeb 内每个网页的访问时长? 我们有个数据埋点的需求.

需要在 ArkWeb 内统计并上报某个网页被访问的时长.

请问 ArkWeb 是否提供了一些 API, 我可以监听并回调该网页的起始与关闭并记录展示时间?

3 回复

目前暂无监听网页关闭的API,如果是Web中loadUrl加载网页,可以使用onPageVisible()在旧页面不再呈现,新页面即将可见时刷新计时;如果是Web页面或组件复用加载网页,可以在页面和组件的生命周期中进行打点。

核心代码如下:

export function hiAppEventFun(pageName: string, time: number): void {
  // 在页面关闭时进行事件打点,以记录用户浏览时间
  let eventParams: Record<string, number> = { 'click_time': 100 };
  let eventInfo: hiAppEvent.AppEventInfo = {
    // 事件领域定义----打开页面
    domain: "close",
    // 事件名称定义----浏览
    name: "browsing",
    // 事件类型定义
    eventType: hiAppEvent.EventType.BEHAVIOR,
    // 事件参数定义
    params: eventParams,
  };
  hiAppEvent.write(eventInfo).then(() => {
    console.log(pageName + "浏览了" + time + " 秒")
  }).catch((err: BusinessError) => {
    hilog.error(0x0000, 'testTag', `HiAppEvent err.code: ${err.code}, err.message: ${err.message}`)
  });
}

在进入页面时开始计时,关闭页面时进行调用事件打点函数

  timer: number = 0;
  count: number = 0;

  onPageShow(){
   this.timer = setInterval(() =>{
      this.index++;
    },1000)
  }
 
  onPageHide(){
    clearInterval(this.timer);
    hiAppEventFun(this.pageInfo, this.index)
  }

更多关于HarmonyOS鸿蒙Next中如何统计 ArkWeb 内每个网页的访问时长?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,统计ArkWeb内每个网页的访问时长可以通过以下步骤实现:

  1. 监听页面加载事件:使用ArkWeb提供的onPageStartonPageFinish事件来记录页面的开始和结束时间。
  2. 计算访问时长:在onPageFinish事件中,获取当前时间,并与onPageStart中记录的时间进行比较,计算出访问时长。
  3. 存储访问时长:将计算出的访问时长存储在本地或发送到服务器进行进一步分析。

具体实现步骤如下:

import web_webview from '@ohos.web.webview';

let startTime: number = 0;

web_webview.WebviewController.onPageStart((url: string) => {
  startTime = new Date().getTime(); // 记录页面开始加载的时间
});

web_webview.WebviewController.onPageFinish((url: string) => {
  const endTime = new Date().getTime(); // 记录页面加载完成的时间
  const duration = endTime - startTime; // 计算访问时长
  console.log(`页面 ${url} 的访问时长为 ${duration} 毫秒`);
  // 可以将duration存储或发送到服务器
});

通过以上代码,可以统计ArkWeb内每个网页的访问时长。

在HarmonyOS鸿蒙Next中,统计ArkWeb内每个网页的访问时长可以通过以下步骤实现:

  1. 监听页面加载事件:使用onPageStartonPageFinish方法分别记录页面的开始和结束时间。
  2. 计算访问时长:在onPageFinish中获取当前时间,并与onPageStart记录的时间相减,得到访问时长。
  3. 存储和上报数据:将统计的时长数据存储在本地或通过网络请求上报到服务器。

示例代码:

let startTime;
ArkWeb.onPageStart(() => {
    startTime = new Date().getTime();
});

ArkWeb.onPageFinish(() => {
    const endTime = new Date().getTime();
    const duration = endTime - startTime;
    console.log(`页面访问时长:${duration}ms`);
    // 存储或上报 duration
};
回到顶部