iOS 会话重放¶
前置条件¶
- 确保您已设置并初始化 FTMobileSDK RUM 配置,并开启 View 的监控采集。
- iOS Session Replay 目前为 alpha 功能,版本支持:SDK.Version >= 1.6.0
- 建议使用文档最上方 badge 显示的版本,另外通过下面命令可找到发布的可用 alpha 版本,alpha 版本更新日志在这里
配置¶
根据您的包管理器将 FTMobileSDK 库中 FTSessionReplay 功能组件链接到您的项目:
CocoaPods¶
pod 'FTMobileSDK', 'last_alpha_version'
pod 'FTMobileSDK/FTSessionReplay', 'last_alpha_version' # 新增
Swift Package Manager¶
dependencies: [
.package(url: "https://github.com/GuanceCloud/FTMobileSDK.git",
from: "last_alpha_version")
],
targets: [
.target(
name: "YourTarget",
dependencies: [
.product(name: "FTMobileSDK", package: "FTMobileSDK")
.product(name: "FTSessionReplay", package: "FTMobileSDK"), //新增
]),
]
代码调用¶
#import <FTMobileSDK/FTRumSessionReplay.h>
FTSessionReplayConfig *srConfig = [[FTSessionReplayConfig alloc]init];
srConfig.touchPrivacy = FTTouchPrivacyLevelShow;
srConfig.textAndInputPrivacy = FTTextAndInputPrivacyLevelMaskSensitiveInputs;
srConfig.sampleRate = 100;
[[FTRumSessionReplay sharedInstance] startWithSessionReplayConfig:srConfig];
| 属性 | 类型 | 必须 | 含义 |
|---|---|---|---|
| sampleRate | int | 否 | 采样率。取值范围 [0,100],0 表示不采集,100 表示全采集,默认值为 100。此采样率是 RUM 采样基础上的采样率。 |
| sessionReplayOnErrorSampleRate | int | 否 | 设置错误采集率,当会话未被 sampleRate 采样时,若会话期间发生错误,可以采集到错误前 1 分钟范围的数据,取值范围 [0,100],0 表示不采集,100 表示全采集,默认值为 0。SDK 1.6.2-alpha.1 以上支持 |
| privacy | FTSRPrivacy | 否 | 设置 Session Replay 中内容屏蔽的隐私级别。默认FTSRPrivacyMask。屏蔽处理:文本替换为 * 或 # FTSRPrivacyAllow: 除了敏感输入控件外记录所有内容,例如密码输入FTSRPrivacyMaskUserInput:屏蔽输入元素。例如 UITextField、UISwitch 等FTSRPrivacyMask:屏蔽所有内容。即将废弃,可兼容使用,建议优先使用 touchPrivacy 、textAndInputPrivacy 进行细粒度的屏蔽隐私级别设置 |
| touchPrivacy | FTTouchPrivacyLevel | 否 | 会话重放中触控屏蔽的可用隐私级别。默认FTTouchPrivacyLevelHide。FTTouchPrivacyLevelShow: 显示所有用户触控FTTouchPrivacyLevelHide:屏蔽所有用户触控设置后覆盖 privacy 的配置SDK 1.6.1 以上版本支持这个参数 |
| textAndInputPrivacy | FTTextAndInputPrivacyLevel | 否 | 会话重放中文本和输入屏蔽的可用隐私级别。默认 FTTextAndInputPrivacyLevelMaskAllFTTextAndInputPrivacyLevelMaskSensitiveInputs:显示除敏感输入外的所有文本,例如密码输入FTTextAndInputPrivacyLevelMaskAllInputs:屏蔽所有输入字段,例如 UITextField、UISwitch、UISlider 等FTTextAndInputPrivacyLevelMaskAll:屏蔽所有文本和输入设置后覆盖 privacy 的配置SDK 1.6.1 以上版本支持这个参数 |
隐私覆盖¶
SDK 1.6.1 以上版本支持
SDK 除了支持通过 FTSessionReplayConfig 配置全局屏蔽级别,还支持在视图级覆盖这些设置。
视图级隐私覆盖:
- 支持覆盖文本和输入屏蔽级别与触控屏蔽级别
- 支持设置完全隐藏特定视图
注意:
- 为了确保正确识别覆盖,应在视图生命周期中尽早应用它们。这可以防止会话重放在应用设置的覆盖之前处理视图的情况。
- 隐私覆盖会影响视图及其子视图。这意味着,即使覆盖应用于可能不会立即生效的视图(例如,将图片覆盖应用于文本输入),覆盖仍会应用于所有子视图。
- 隐私覆盖优先级:子视图 > 父视图 > 全局设置
文本和输入覆盖¶
要覆盖文本和输入隐私,请在视图实例上使用 sessionReplayOverrides.textAndInputPrivacy 将其设为 FTTextAndInputPrivacyLevelOverride 枚举中的某个值。若需移除现有覆盖规则,直接将该属性设为 FTTextAndInputPrivacyLevelOverrideNone 即可。
触控覆盖¶
要覆盖触控隐私,请在视图实例上使用 sessionReplayOverrides.touchPrivacy 将其设为 FTTouchPrivacyLevelOverride 枚举中的某个值。若需移除现有覆盖规则,直接将该属性设为 FTTouchPrivacyLevelOverrideNone 即可。
隐藏元素覆盖¶
对于需要完全隐藏的敏感元素,请使用 sessionReplayPrivacyOverrides.hide 进行设置。
当设置某个元素为隐藏时 ,它将在重放中被标记为 "Hidden" 的占位符替换,并且不会记录其子视图。
注意:将视图标记为隐藏不会阻止在该元素上记录触控交互。要隐藏触控交互,除了将元素标记为隐藏外,还要使用触控覆盖。