[swift] hi

Viewer

  1. import Foundation
  2. import UIKit
  3. import Flutter
  4. class ScreenRecordHandler: NSObject {
  5.     private var appDelegate = (UIApplication.shared.delegate as? AppDelegate)
  6.     weak private var screen : UIView? = nil
  7.     static var shared = ScreenRecordHandler()
  8.     func configure() {
  9.         print("\(#function)")
  10.         let controller : FlutterViewController = appDelegate?.window?.rootViewController as! FlutterViewController
  11.         let channel = FlutterMethodChannel(name: "app.flutter.dev/ScreenRecord",
  12.                                            binaryMessenger: controller.binaryMessenger)
  13.         channel.setMethodCallHandler({
  14.             (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
  15.             // This method is invoked on the UI thread.
  16.             // Handle battery messages.
  17.             if call.method == "preventScreenRecord" {
  18.                 self.preventScreenRecord()
  19.             } else if call.method == "preventScreenRecordDispose" {
  20.                 self.preventScreenRecordDispose()
  21.             } else {
  22.                 result(FlutterMethodNotImplemented)
  23.             }
  24.         })
  25.     }
  26.     var field: UITextField!
  27.     func preventScreenRecord() {
  28.         print("preventScreenRecord")
  29.         if let keyWindow = UIApplication.shared.keyWindow {
  30.             hideContentOnScreenCapture(isSecure: true, window: keyWindow)
  31.         }
  32.     }
  33.     func preventScreenRecordDispose() {
  34.         print("preventScreenRecordDispose")
  35.         if let keyWindow = UIApplication.shared.keyWindow {
  36.             hideContentOnScreenCapture(isSecure: false, window: keyWindow)
  37.         }
  38.     }
  39.     func hideContentOnScreenCapture(isSecure: Bool, window: UIWindow) {
  40.         DispatchQueue.main.async {
  41.             if isSecure {
  42.                 self.field = UITextField()
  43.                 self.field.isSecureTextEntry = true
  44.                 window.addSubview(self.field)
  45.                 self.field.centerYAnchor.constraint(equalTo: window.centerYAnchor).isActive = true
  46.                 self.field.centerXAnchor.constraint(equalTo: window.centerXAnchor).isActive = true
  47.                 window.layer.superlayer?.addSublayer(self.field.layer)
  48.                 self.field.layer.sublayers?.first?.addSublayer(window.layer)
  49.             }
  50.             else {
  51.                 if self.field != nil {
  52.                     self.field.isSecureTextEntry = false
  53.                 }
  54.             }
  55.         }
  56.     }    
  57. }

Editor

You can edit this paste and save as new:


File Description
  • hi
  • Paste Code
  • 06 May-2024
  • 2.41 Kb
You can Share it: