Android 会话重放¶
前置条件¶
- 确保您已设置并初始化 FTSdk RUM 配置,并开启 View 的监控采集。
- Android Session Replay 需要使用
ft-sdk:1.7.0以上版本。 ft-session-replay与ft-session-replay-material需要保持使用同一版本号。- 建议优先使用文档最上方 badge 显示的正式发布稳定版本,不再建议使用
alpha、beta等预发布版本。 - 如果您希望提前继承超前能力、关注最新特性或跟进未正式发布的变更,可以前往 GitHub 关注 Android SDK 仓库及相关更新日志:GuanceCloud/datakit-android
配置¶
//添加 SDK 的依赖
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-sdk:[latest_version]'
//需要开启 session replay 功能
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay:[session_replay_version]'
//需要支持 session replay 需要支持 material 组件
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay-material:[session_replay_version]'
//需要支持 session replay 需要支持 compose 组件
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay-compose:[session_replay_version]'
代码调用¶
| 方法名 | 类型 | 必须 | 含义 |
|---|---|---|---|
| setSampleRate | Float | 否 | 设置采集率,取值范围 [0,1],0 表示不采集,1 表示全采集,默认值为 1。 |
| setSessionReplayOnErrorSampleRate | Float | 否 | 设置错误采集率,当会话未被 setSampleRate 采样时,若会话期间发生错误,可以采集到错误前 1 分钟范围的数据,取值范围 [0,1],0 表示不采集,1 表示全采集,默认值为 0, ft-session-replay 0.1.2-alpha01 以上版本支持 |
| setPrivacy | SessionReplayPrivacy | 否 | SessionReplayPrivacy.ALLOW 不进行屏蔽隐私数据, SessionReplayPrivacy.MASK 屏蔽所有数据,包括文字、CheckBox,RadioButton,Switch; SessionReplayPrivacy.USER_INPUT(推荐)屏蔽用户输入的部份数据,包括输入框中文字、CheckBox,RadioButton,Switch, 默认,为 SessionReplayPrivacy.MASK。即将废弃,可以兼容使用,建议优先使用 setTouchPrivacy 、setTextAndInputPrivacy 进行屏蔽设置 |
| setTextAndInputPrivacy | TextAndInputPrivacy | 否 | TextAndInputPrivacy.MASK_SENSITIVE_INPUTS 只对密码等信息进行屏蔽, TextAndInputPrivacy.MASK_ALL_INPUTS 屏蔽用户输入的部份数据,包括输入框中文字、CheckBox,RadioButton,Switch,TextAndInputPrivacy.MASK_ALL,屏蔽所有数据,包括文字、CheckBox,RadioButton,Switch。默认 TextAndInputPrivacy.MASK_ALL,设置后覆盖 setPrivacy 的配置,ft-session-replay 0.1.1-alpha01 以上版本支持 |
| setImagePrivacy | ImagePrivacy | 否 | ImagePrivacy.MASK_ALL 屏蔽所有图片;ImagePrivacy.MASK_LARGE_ONLY 只屏蔽大图内容(大于 100x100 dp 的内容图片);ImagePrivacy.MASK_NONE 不屏蔽图片。默认 ImagePrivacy.MASK_ALL,设置后覆盖 setPrivacy 的配置,ft-sdk >= 1.7.0-alpha40,ft-session-replay >= 0.1.3-alpha14 |
| setTouchPrivacy | TouchPrivacy | 否 | TouchPrivacy.SHOW 不进行触控数据屏蔽, TouchPrivacy.HIDE 屏蔽触控数据。设置后覆盖 setPrivacy 的配置 ft-session-replay 0.1.1-alpha01 以上版本支持 |
| addExtensionSupport | ExtensionSupport | 否 | 添加额外自定义支持。使用 ft-session-replay-material 可以使用 MaterialExtensionSupport 提供额外 Material 组件采集支持 |
隐私覆盖¶
ft-session-replay 0.1.1-alpha01 以上版本支持
SDK 除了支持通过 FTSessionReplayConfig 配置全局屏蔽级别,还支持在视图级覆盖这些设置。
视图级隐私覆盖:
- 支持覆盖图片屏蔽级别
- 支持覆盖文本和输入屏蔽级别与触控屏蔽级别
- 支持设置完全隐藏特定视图
注意:
- 为了确保正确识别覆盖设置,应在视图生命周期中尽早应用它们。这可以防止 Session Replay 在应用设置的覆盖之前处理视图的情况。
- 隐私覆盖会影响视图及其子视图。这意味着,即使覆盖应用于可能不会立即生效的视图(例如,将图片覆盖应用于文本输入),覆盖仍会应用于所有子视图。
- 隐私覆盖优先级:子视图 > 父视图 > 全局设置
图片覆盖¶
ft-sdk>= 1.7.0-alpha40,ft-session-replay>= 0.1.3-alpha14
要覆盖图片隐私,请在视图实例上使用 PrivacyOverrideExtensions.setSessionReplayImagePrivacy(View,ImagePrivacy) 将其设为 ImagePrivacy 枚举中的某个值。若需移除现有覆盖规则,直接将该属性设为 null 即可。
文本和输入覆盖¶
要覆盖文本和输入隐私,请在视图实例上使用 PrivacyOverrideExtensions.setSessionReplayTextAndInputPrivacy(View,TextAndInputPrivacy) 将其设为 TextAndInputPrivacy 枚举中的某个值。若需移除现有覆盖规则,直接将该属性设为 null 即可。
触控覆盖¶
要覆盖触控隐私,请在视图实例上使用 PrivacyOverrideExtensions.setSessionReplayTouchPrivacy(View,TouchPrivacy) 将其设为 TouchPrivacy 枚举中的某个值。若需移除现有覆盖规则,直接将该属性设为 null 即可。
隐藏元素覆盖¶
对于需要完全隐藏的敏感元素,请使用 PrivacyOverrideExtensions.setSessionReplayHidden(View,Boolean) 进行设置。
当设置某个元素为隐藏时 ,它将在重放中被标记为 "Hidden" 的占位符替换,并且不会记录其子视图。
注意:将视图标记为隐藏不会阻止在该元素上记录触控交互。要隐藏触控交互,除了将元素标记为隐藏外,还要使用触控覆盖。
Webview Session Replay¶
ft-session-replay 0.1.3-alpha11, ft-sdk 1.7.0-alpha36 以上版本支持
WebView Session Replay,需要在 WebView 访问页面集成Web 监测 SDK,并在 Webview 开启 Session Replay。
Tencent Webivew X5 Support¶
Jetpack Compose 支持¶
ft-session-replay-compose与ft-session-replay保持使用同一版本号。
Android Session Replay 已支持对 Jetpack Compose 界面进行采集与回放。使用 Compose 页面时,需要额外引入 Compose 扩展依赖,并在 FTSessionReplayConfig 中添加 ComposeExtensionSupport。
添加依赖¶
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay-compose:[session_replay_version]'
初始化配置¶
FTSdk.initSessionReplayConfig(new FTSessionReplayConfig().setSampleRate(1f)
.setTouchPrivacy(TouchPrivacy.SHOW)
.setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)
.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)
.addExtensionSupport(new ComposeExtensionSupport())
.addExtensionSupport(new MaterialExtensionSupport()), context);
FTSdk.initSessionReplayConfig(FTSessionReplayConfig().setSampleRate(1f)
.setTouchPrivacy(TouchPrivacy.SHOW)
.setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)
.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)
.addExtensionSupport(ComposeExtensionSupport())
.addExtensionSupport(MaterialExtensionSupport()), context)
Compose 隐私覆盖¶
Compose 页面支持通过 Modifier 覆盖 Session Replay 的隐私配置:
sessionReplayHide(Boolean):隐藏指定 Compose 节点sessionReplayImagePrivacy(ImagePrivacy):覆盖图片隐私级别sessionReplayTextAndInputPrivacy(TextAndInputPrivacy):覆盖文本和输入隐私级别sessionReplayTouchPrivacy(TouchPrivacy):覆盖触控隐私级别
当前限制说明¶
- Compose 回放依赖语义节点与组件映射,不保证像素级还原。
- 目前支持常见文本、输入框、图片、按钮、开关、滑块、单选框、复选框、Tab 及容器类组件的回放。
Brush背景暂不支持,例如线性渐变、径向渐变等背景不会按原始渐变效果还原;建议关键演示区域优先使用纯色背景。