截图遮蔽
在上传之前,使用用于屏蔽特定视图的 API,屏蔽设备上屏幕截图中的敏感内容。
每个崩溃、ANR 和 Bug Report 都可以包含屏幕截图。在上传屏幕截图之前,敏感内容会先在设备上被遮罩,因此不会到达服务器。遮罩范围由 Dashboard 中配置的屏幕截图遮罩级别控制。
屏蔽本身可以检测到的内容因平台而异。
Android
屏蔽不需要设置。 SDK 自动检查视图层次结构(包括视图和 Jetpack Compose),并根据选定的掩码级别隐藏内容。
iOS
UIKit 不需要设置。每个可见元素都是一个UIView,并且屏蔽遍历视图层次结构以编辑敏感类型,例如UILabel, UITextField, 和UITextView基于掩码级别。
SwiftUI 的工作方式有所不同。大多数 SwiftUI 视图不会产生个人UIView实例;整个树呈现在单个托管视图内,无法逐个视图进行检查。默认情况下,整个托管视图都会被屏蔽,无论屏蔽级别如何,因此不会发生 SwiftUI 内容泄漏。两个修饰符控制各个视图。
屏蔽 SwiftUI 视图
.msrMask()将视图标记为敏感,编辑其框架,无论自动检测是否会捕获它。独立使用它Text保存用户数据的视图和自定义视图。
Text(user.email)
.msrMask()取消屏蔽 SwiftUI 视图
.msrUnmask()显示不敏感的视图,例如导航标题、图标或静态标签。视图的框架被从遮罩区域中切掉。
Text("Welcome back")
.msrUnmask()将两者结合在混合敏感和非敏感内容的屏幕中。由 UIKit 输入支持的字段,例如TextField和SecureField,会自动屏蔽。
Form {
Section("Profile") {
Text("Username")
.msrUnmask()
TextField("Username", text: $username)
}
Section("Security") {
SecureField("Password", text: $password)
Text(recoveryHint)
.msrMask()
}
}