如何防止在flutter IOS中进行屏幕截图

Saa*_*oud 1 iphone ios swift flutter flutter-ios

我有一个 iOS 教育应用程序。我想阻止用户在特定屏幕上进行屏幕截图或屏幕记录以及如何制作

在这里尝试了很多解决方案,但没有人在工作

如下所附,这是我的 iPhone 从另一个应用程序录制的屏幕记录,它仍然会记录,直到我到达特定屏幕并将我推回并向我显示此警报对话框如何实现此功能

屏幕记录

Saa*_*oud 7

实际上,APP Store 阻止了此功能,即禁用屏幕截图,因此我们可以解决此问题。我的解决方案是让用户制作屏幕截图但没有数据。我通过这个简单的代码实现了它


import UIKit
import Flutter
import FirebaseCore

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  private var textField = UITextField()
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    self.window.makeSecure()
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
  // Screenshot Prevent Functions
 

      // <Add>
  override func applicationWillResignActive(
    _ application: UIApplication
  ) {
    self.window.isHidden = true;
  }
  override func applicationDidBecomeActive(
    _ application: UIApplication
  ) {
    self.window.isHidden = false;
  }

  
}
  extension UIWindow {
   func makeSecure() {
    let field = UITextField()
    field.isSecureTextEntry = true
    self.addSubview(field)
    field.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
    field.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
    self.layer.superlayer?.addSublayer(field.layer)
    field.layer.sublayers?.first?.addSublayer(self.layer)
  }
}
Run Code Online (Sandbox Code Playgroud)