跳转至

UniApp 会话重放

UniApp 会话重放当前支持 Android 和 iOS,暂不支持 HarmonyOS。普通 uni-app 通过可选的 GC-UniSessionReplay 模块初始化;uni 小程序由宿主 App 通过对应平台的 Native SDK 初始化。

前置条件

  • 已完成 UniApp 应用接入,并初始化 Mobile SDK、RUM 与 View 采集;
  • 使用 0.3.0 或更高版本的 GC-UniPluginGC-JSPluginGC-UniSessionReplay,三个模块的版本号保持一致;
  • HBuilderX 版本不低于 4.25.0
  • Android 最低支持 API 24,iOS 最低支持 12.0。

安装

从 SDK 源码仓库对应版本的 Hbuilder_Example/uni_modules 中,将 GC-UniSessionReplay 复制到业务工程的 uni_modules

uni_modules/
├── GC-JSPlugin
├── GC-UniPlugin
└── GC-UniSessionReplay

初始化

先完成 Mobile SDK 与 RUM 初始化,再初始化 Session Replay。建议在启动 View 自动采集前调用一次 GCUniSessionReplay.setConfig()

import {
    GCUniSessionReplay,
    GCSessionReplayTouchPrivacy,
    GCSessionReplayTextAndInputPrivacy,
    GCSessionReplayImagePrivacy
} from '@/uni_modules/GC-UniSessionReplay';

GCUniSessionReplay.setConfig({
    sampleRate: 100,
    sessionReplayOnErrorSampleRate: 0,
    touchPrivacy: GCSessionReplayTouchPrivacy.SHOW,
    textAndInputPrivacy:
        GCSessionReplayTextAndInputPrivacy.MASK_SENSITIVE_INPUTS,
    imagePrivacy: GCSessionReplayImagePrivacy.MASK_NON_BUNDLED_ONLY,
    enableLinkRUMKeys: ['wgt_id', 'wgt_name']
});

推荐初始化顺序:

mobileAgent.sdkConfig()
  -> rum.setConfig()
  -> GCUniSessionReplay.setConfig()
  -> gcViewTracking.startTracking()

采集 uni-app 页面内容

Android 和 iOS 平台的 uni-app 页面运行在应用内置的 WebView 中。初始化 GC-UniSessionReplay 后,还需要通过 gcViewTracking.evalSessionReplayJS() 将 Web 监测 SDK 注入 uni-app 的渲染 WebView,并开启 Web Session Replay。完成此操作后,会话重放中才能展示 uni-app 页面内容及用户在页面中的操作。

请在调用 gcViewTracking.startTracking() 前配置以下注入脚本:

import { gcViewTracking } from '@/uni_modules/GC-JSPlugin';

// #ifdef APP-PLUS
const jsCode = `
    // 在 uni-app 的渲染 WebView 中加载 Web 监测 SDK
    var script = document.createElement('script');
    script.src = 'https://static.guance.com/browser-sdk/v3/dataflux-rum.js';
    script.onload = function() {
        DATAFLUX_RUM.setGlobalContextProperty('wgt_id', 'wgt_id_1');
        DATAFLUX_RUM.setGlobalContextProperty('wgt_name', 'wgt_name_1');
        window.DATAFLUX_RUM &&
            window.DATAFLUX_RUM.init({
                // 桥接模式仍需校验数据接收地址,但 RUM 数据会通过
                // FTWebViewJavascriptBridge 发送,而不会请求此地址
                datakitOrigin: window.location.origin,
            });
        window.DATAFLUX_RUM.startSessionReplayRecording();
    };
    document.head.appendChild(script);
`;
gcViewTracking.evalSessionReplayJS(jsCode);
// #endif

wgt_idwgt_name 是可选的自定义字段,可用于标识由 uni-app 渲染层产生的数据。如果需要将这些字段关联到会话重放数据,请在 GCUniSessionReplay.setConfig()enableLinkRUMKeys 中声明字段名称,并通过 DATAFLUX_RUM.setGlobalContextProperty() 为同名字段设置实际值。如果不需要通过这些字段区分数据,可以不配置 enableLinkRUMKeys,同时删除注入脚本中的两行 setGlobalContextProperty() 调用。

evalSessionReplayJS() 会在 uni-app 页面对应的渲染 WebView 中执行该脚本,无需在每个页面中重复调用。

此处采集的是 uni-app 自身的渲染页面。若需要采集 <web-view> 组件加载的外部网页,请参考 WebView 数据监测

参数说明

参数名称 参数类型 必须 参数说明
sampleRate number 采样率,范围 [0,100]0 表示不采集,100 表示全采集,默认 100
sessionReplayOnErrorSampleRate number 错误采集率,范围 [0,100];未命中 sampleRate 采样的会话发生错误时,按此比例采集错误前 1 分钟的数据,默认 0
touchPrivacy string 触控隐私级别:showhide,默认 hide
textAndInputPrivacy string 文本与输入隐私级别:maskSensitiveInputsmaskAllInputsmaskAll,默认 maskAll
imagePrivacy string 图片隐私级别:maskNonBundledOnlymaskAllmaskNone,默认 maskAll;Android 将 maskNonBundledOnly 映射为仅遮蔽大图
enableSwiftUI boolean 仅 iOS;是否录制 SwiftUI 页面,默认 false
enableLinkRUMKeys array 将指定的 RUM Context 字段关联到 Session Replay 数据

查看会话重放

移动端会话重放的查看方式与 Web 端一致,具体可参考 Web 会话重放访问方式

文档评价

文档内容是否对您有帮助?