更新记录
1.0.0(2026-01-26)
- feat: Android/iOS 禁止截屏/录屏
- feat: Android/iOS 截图监听(Android 为尽力而为方案)
- feat: iOS App Switcher 保护(blur)
- fix(ios): 修复 iOS 端 UTS/Swift 桥接编译失败(import/Dispatch + blurIntensity 类型 + subscription.remove)
- fix(ios): 截图监听 addScreenshotListener() 返回的 subscription.remove() 在 JS/UVUE 侧可正常调用(返回 plain object)
- feat: 新增 UTS 侧日志前缀输出(
[hans-screen-capture]),便于在控制台检索 - feat: 新增
isLogEnabled()用于查询插件日志开关状态 - feat: 插件日志默认开启(如需关闭可调用
setLogEnabled(false)) - feat: 标记支持 uni-app(App-Vue/APP-NVue)与 uni-app x(Android/iOS)
- fix: 截屏监听使用
onScreenshot()以支持持续回调(HBuilderX 4.25+ keepAlive 策略)
平台兼容性
uni-app(4.87)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | - | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.87)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | √ | √ | - | - |
hans-screen-capture
uni-app / uni-app x(UTS)插件:禁止截屏/录屏 + 截图监听(Android/iOS)。
平台支持
app-android:√(禁止截屏/录屏/最近任务预览);截图监听为“尽力而为 + 权限 + 启发式”app-ios:√(secure layer 禁止截屏;录屏遮挡;App Switcher 保护;截图监听)
安装
把本模块放在项目 uni_modules/hans-screen-capture/ 下即可。
API
1) 禁止/允许截屏(支持 key 叠加)
import { preventScreenCapture, allowScreenCapture } from '@/uni_modules/hans-screen-capture'
preventScreenCapture({
key: 'demo',
success: (res) => console.log('prevent ok', res),
fail: (e) => console.error('prevent fail', e),
})
allowScreenCapture({
key: 'demo',
success: (res) => console.log('allow ok', res),
})
说明:
- 未传
key使用内部默认 key;可多处调用叠加,任一 key 未释放则保持生效。
2) 截图监听
import { onScreenshot } from '@/uni_modules/hans-screen-capture'
const sub = onScreenshot((event) => {
console.log('onScreenshot', event)
})
// 取消监听
sub.remove()
说明:
- HBuilderX 4.25+(iOS 的 uni-app/uni-app x、Android 的 uni-app)默认会在回调触发一次后回收 callback;监听类 API 请使用
on*形式以支持持续回调。
3) 权限(Android:截图监听用)
import { getPermissions, requestPermissions } from '@/uni_modules/hans-screen-capture'
getPermissions({
success: (res) => console.log(res),
})
requestPermissions({
success: (res) => console.log(res),
})
说明:
- Android:截图监听通常需要读取图片权限(API 33+ 为
READ_MEDIA_IMAGES,<=32 为READ_EXTERNAL_STORAGE)。 - Android:禁止截屏/录屏本身不需要额外权限(
FLAG_SECURE)。 - iOS:恒返回
granted。
4) App Switcher 保护(iOS)
import { enableAppSwitcherProtection, disableAppSwitcherProtection } from '@/uni_modules/hans-screen-capture'
enableAppSwitcherProtection({ blurIntensity: 0.5 })
disableAppSwitcherProtection()
5) 日志开关
import { setLogEnabled, isLogEnabled } from '@/uni_modules/hans-screen-capture'
// 默认开启;如需关闭:
setLogEnabled(false)
console.log('插件日志开关:', isLogEnabled())
说明:
- UTS 侧日志会以
[hans-screen-capture]前缀输出到控制台。 - Android 原生日志 tag 为
hans-screen-capture(logcat)。
已知限制(Android 截图监听)
截图监听基于系统相册写入事件 + 关键字启发式判断,受 ROM/相册实现/权限策略影响,可能出现漏报或误报;建议在产品层面把它当作“提示性事件”,不要用于强安全依赖。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 226
赞赏 0
下载 13769406
赞赏 1853
赞赏
京公网安备:11010802035340号