KKMonitor

截图遮蔽

在上传之前,使用用于屏蔽特定视图的 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 输入支持的字段,例如TextFieldSecureField,会自动屏蔽。

Form {
    Section("Profile") {
        Text("Username")
            .msrUnmask()
        TextField("Username", text: $username)
    }
    Section("Security") {
        SecureField("Password", text: $password)
        Text(recoveryHint)
            .msrMask()
    }
}