更新记录

1.01(2026-11-13)

初始化


平台兼容性

uts-screen-shield

UTS 原生防截屏 / 录屏拦截插件。零 UI、纯原生能力,支持 uni-app(vue2/vue3)与 uni-app x(uvue)。

能力矩阵

能力 Android iOS
阻断系统截屏 ✅ FLAG_SECURE 硬阻断 ❌ 系统不允许,只能事后感知
阻断录屏画面 ✅ 录屏中窗口区域黑屏 ⚠️ secure 图层 trick,尽力而为
录屏状态实时回调 ❌ 系统无公开 API ✅ UIScreen.isCaptured
截屏事件回调 ✅ Android 14+ ✅ 事后通知
后台缩略图防泄漏 ✅ Recents 缩略图空白 ✅ 毛玻璃遮罩

安装

把 uni_modules/uts-screen-shield 整个目录放进项目,HBuilderX 会自动识别为 UTS 插件。 自定义基座 / 云打包时勾选该插件即可,不需要手动配置任何权限。

API

import {
  enableSecure, disableSecure, isCapturing,
  onCaptureChange, onScreenshot,
  enableBlurWhenBackground, removeAllListeners
} from '@/uni_modules/uts-screen-shield'
方法 说明
enableSecure() 开启防护(Android 打 FLAG_SECURE + 注册截屏回调;iOS 注册录屏监听 + 尝试 secure 图层)
disableSecure() 关闭防护并还原(清除标志、移除监听、卸载 secure 图层)
isCapturing(): boolean 是否正在录屏。iOS 为真实查询,Android 恒为本地缓存状态
onCaptureChange(cb) 录屏状态变化,cb(isCapturing: boolean)
onScreenshot(cb) 截屏事件,cb({ platform, timestamp, reason })
enableBlurWhenBackground() 切后台毛玻璃遮挡(iOS 用 UIVisualEffectView,Android 由 FLAG_SECURE 覆盖)
removeAllListeners() 移除全部 JS 监听,页面 onUnload 必须调用

⚠️ iOS 限制(请务必写进你的产品文案)

  1. 无法阻断系统截屏。App 只能在截图完成后收到 UIApplicationUserDidTakeScreenshotNotification,此时图片已进相册。除非申请相册写权限去删图(体验差、审核风险高),否则唯一手段是"事后遮黑 + 提示"。
  2. 录屏可以检测,但遮黑是业务的事。插件只通知 isCaptured 变化,页面遮黑由业务自己做(见 demo 的 v-if="capturing" 遮罩层)。
  3. secure 图层 trick 不是公开 API。它依赖 isSecureTextEntry 的安全渲染上下文,不同 iOS 版本表现不一致,可能与视频/地图/WebView 抢渲染,也存在 App Store 审核风险。插件默认"尽力安装 + 失败静默降级",请自行评估。
  4. 真正 100% 有效的方案只有「检测到录屏后由业务遮黑」,这也是本插件把决定权交给业务的原因。

性能说明

  • 插件不注册任何全局初始化,import 不产生任何原生开销,只有首次调用 enableSecure() 才注册监听。
  • 回调做了状态去重:isCapturing 未变化不会跨线程回调 JS,避免高频 IPC 拖慢渲染。
  • 原生对象(通知 token / UITextField / UIVisualEffectView)都在 disableSecure() 与 removeAllListeners() 中释放,长驻页面反复进出不会泄漏。

目录结构

uni_modules/uts-screen-shield/
├── package.json                  # 插件描述(uni_modules + 插件市场信息)
├── readme.md
├── demo/
│   └── screen-shield-demo.vue    # 接入示例页面
└── utssdk/
    ├── interface.uts             # 公共类型
    ├── index.uts                 # 默认实现(H5/小程序降级)
    ├── app-android/
    │   ├── index.uts             # Android 实现
    │   └── config.json
    └── app-ios/
        ├── index.uts             # iOS 实现
        └── config.json

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。