如何在React Native中阻止截取屏幕截图禁用屏幕捕获

如何在React Native中阻止截取屏幕截图禁用屏幕捕获

移动应用中的屏幕截图预防

大家好,这里是如何在 React Native 中阻止截图。 这篇文章是应许多读者的要求而写的,他们问我如何禁用/阻止屏幕截图,特别是针对 iOS。

在许多用例中,我们希望阻止在 React Native 应用程序中截取屏幕截图,例如,如果我们有任何临时 QR 代码生成功能,但我们不希望用户截取屏幕截图。 这里应该提到的一件事是,您不应该完全依赖此功能来保护您的数据。 用户还可以从其他移动设备捕获图像,因此请相应地进行计划。

推荐:WooCommerce主题Oxygen WooCommerce主题 

防截屏功能或安卓应用程序

Android 系统提供了内置的阻止屏幕截图的机制,该机制可从 Android Honeycomb (3.0) 开始使用。 它实际上需要一行代码才能放入您希望防止被屏幕截图的 Activity 中。 它完全禁用了此功能(用户将看到漂亮的错误消息,而不是屏幕截图)。 此外,它还阻止所有屏幕录制选项(只有黑屏作为输出可见),这是一个非常好的附加组件。

我们只需要添加以下代码即可防止屏幕捕获

getWindow().setFlags(
  WindowManager.LayoutParams.FLAG_SECURE,
  WindowManager.LayoutParams.FLAG_SECURE
);

以下是在 React Native App (Android) 中限制屏幕截图的步骤

1. 打开 你的项目 -> android -> 应用程序 -> src -> main -> java -> com -> 你的项目名称 -> MainActivity.java

2.添加以下导入

import android.view.WindowManager;
import android.os.Bundle;

3.添加以下内容 创建时 功能

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_SECURE,
    WindowManager.LayoutParams.FLAG_SECURE
  );
}

块_屏幕截图_示例1

请注意,取得 root 权限的设备可以绕过此机制。 您可能需要检测已取得 root 权限的设备并必须禁用您的应用程序。

输出截图

块屏幕截图示例2

防截屏功能或 iOS 应用程序

如果我们谈论 iOS,那么让我澄清一件事,我们已经尝试了几乎所有可用的方法,但结果是,我们无法通过添加任何代码或使用任何 hack 来限制用户在 iOS 中截取屏幕截图。

在查看更多内容后,我们发现有一种方法可以获取屏幕截图的详细信息,但只有在用户捕获屏幕截图后才会触发它。

class ViewController: UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
      NotificationCenter.default.addObserver(
        forName: UIApplication.userDidTakeScreenshotNotification, 
        object: nil, queue: nil) { _ in
          print("Hey, You have captured a screenshot")
      }
  }
}

借助此功能,我们只能获取屏幕截图的详细信息,但无法进行限制。 我们想如果我们可以在此触发后删除捕获的屏幕截图,但 iOS 不允许从外部应用程序删除任何文件,因此它不起作用。

在尝试了很多事情之后,我们发现没有办法限制 iOS 的屏幕截图,除非您准备好付费:p

如果你想在 iOS 中 100% 防止屏幕截图,那么你可以使用 屏幕屏蔽套件,它是一个付费SDK,可以帮助您创建适用于iOS的React Native应用程序,并且可以截图和录像证明! 我们不会分享有关此 SDK 的任何进一步详细信息,因为您可以在他们的网站上找到详细信息,但这是迄今为止您可以在互联网上找到的最佳选择。

这是您可以阻止在 React Native 中截取屏幕截图并禁用屏幕捕获的方法。 如果您有任何疑问或想分享有关该主题的内容,您可以在下面发表评论或在此处联系我们。 很快就会有更多帖子发布。 

推荐:如何修复启用Hyper-V后无法启动Windows 11


发表评论