You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native是否可实现禁止用户截屏?

React Native 实现禁止截屏功能方案

React Native 可以实现禁止用户截屏的功能,需针对 Android 和 iOS 平台分别处理:

Android 端实现

对应你提到的原生 Java 代码 getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);,在 React Native 项目中有两种实现方式:

  • 全局静态设置:修改项目的 MainActivity.java(或 MainActivity.kt),在页面生命周期方法中添加设置逻辑,示例 Java 代码如下:
@Override
protected void onResume() {
    super.onResume();
    // 开启禁止截屏
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
}

@Override
protected void onPause() {
    super.onPause();
    // 恢复允许截屏(可选,根据业务需求调整)
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
  • 动态控制:自定义原生模块,向 JS 层暴露开启/关闭禁止截屏的方法,在 React Native 组件中通过 NativeModules 调用,实现按需控制。

iOS 端实现

iOS 没有直接匹配 FLAG_SECURE 的 API,但可以通过两种方式实现类似效果:

  • 事前限制(iOS 13+):给当前应用窗口设置 isSecure 属性,禁止系统对窗口内容进行快照,原生代码示例:
// 在 AppDelegate 或自定义模块中
UIWindow *window = [UIApplication sharedApplication].keyWindow;
window.isSecure = YES;
  • 事后处理:监听系统的 UIApplicationUserDidTakeScreenshotNotification 通知,当检测到用户截屏后,立即隐藏敏感内容或给出提示,但这种方式无法完全阻止截屏,只能做后续补救。

内容的提问来源于stack exchange,提问作者Вячеслав Предеин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:22:07