[关闭]
@boxizen 2021-04-21T06:54:24.000000Z 字数 1134 阅读 1953

路径上报

背景

路径上报用于还原用户整个操作历史和访问路径,以供数据分析和 log 备查。
每个访问的页面为一个节点,其中每个节点数据包含页面名称、跳转模块等具体信息。组成整条链路数据。
路径栈存储在客户端。web 侧只负责向客户端 写入 web 节点 和 更新模块信息(标识操作的模块),以保证链路完整性。最后由客户端完成上报。

写入节点存在自动写入和手动写入两种方式。
更新模块信息目前为自动完成 (跟随点击上报)。

手动写入:

如果数据同学在 key 上报中对页面分配了指定名称,并要求在路径上报中使用时,进入页面后通过 common.addPath("pageId") 写入。

自动写入:

进入页面一段时间后(2s 左右)没有手动写入节点,基础库将 根据 URL 自动生成一个 pageId 写入路径栈。
注: 如果 web 的一次页面打开中,存在多个子页面的实现(如多路由 SPA),按照需求又需要算作单独节点的,需要手动写入。

模块更新:

当发生一次点击 key 上报时 (key 中包含 #click# 片段),将自动触发同步到当前路径中,代表用户通过此模块完成跳转操作。
例如发生如下点击上报时:

  1. common.newCompassReport({
  2. key: "main_interface_of_live#game_panel#lottery#click#0",
  3. touid: xxx,
  4. str1: xxx,
  5. others: xxx
  6. // ...
  7. });

这个 key 会被自动更新到当前路径模块信息中。
moduleId 就是 game_panel#lottery。其他几项上报数据也会透传到 moduleExtra 中。
基础库也提供 API 支持手动更新。正常情况下,业务不用做额外处理。
注:单个页面内如果发生多次点击上报,后面的更新会覆盖前面的。

API (手动上报)

  1. common.addPath(pageId, pageExtra); // 写入节点
  2. common.updatePath(moduleId, { pageExtra, ...moduleExtra }); // 更新信息
  3. common.getPathStack(); // 获取路径栈
  4. https://git.code.oa.com/karaoke-web/kg
  5. 详见:
  6. /library/hippy/bridge/recordPath/index.js
  7. /library/hippy/bridge/recordPath/index.web.js

名词解释

pageId: 标识页面节点的名称,一般为 key 上报表中分配的页面名称,或是根据 URL 自动生成的 id
pageExtra: 页面扩展上报数据
moduleId: 标识在此节点中发生操作的模块名称。
moduleExtra: 模块扩展上报数据
trace_money: 商业化路径栈
trace_all: 全路径栈

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注