| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import Flutter
- import UIKit
- import IDLFaceSDK
- public class SwiftFltbdfacePlugin: NSObject, FlutterPlugin {
-
- var eventSink: FlutterEventSink?
- var faceManager = FaceSDKManager.sharedInstance()
- public static func register(with registrar: FlutterPluginRegistrar) {
- let channel = FlutterMethodChannel(name: "plugin.bughub.dev/fltbdface", binaryMessenger: registrar.messenger())
- let instance = SwiftFltbdfacePlugin()
- registrar.addMethodCallDelegate(instance, channel: channel)
-
- let eventChannelName = "plugin.bughub.dev/event"
- let eventChannel = FlutterEventChannel(name: eventChannelName, binaryMessenger: registrar.messenger())
- eventChannel.setStreamHandler(instance)
- }
-
-
- public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
- if call.method == "initialize" {
- let arguments = call.arguments as? [String: String] ?? [:]
- self.faceManager?.setLicenseID(arguments["licenseId"], andLocalLicenceFile: arguments["licenseFileName"])
- return
- }
- else if call.method == "setFaceConfig" {
- let arguments = call.arguments as? [String: Any] ?? [:]
- self.faceManager?.setIllumThreshold(arguments["brightnessValue"] as? Int ?? 40)
- self.faceManager?.setBlurThreshold(arguments["blurnessValue"] as? CGFloat ?? 0.5)
- self.faceManager?.setOccluThreshold(arguments["occlusionValue"] as? CGFloat ?? 0.5)
- self.faceManager?.setEulurAngleThrPitch(arguments["headPitchValue"] as? Int ?? 10,
- yaw: arguments["headYawValue"] as? Int ?? 10,
- roll: arguments["headRollValue"] as? Int ?? 10)
- self.faceManager?.setCropFaceSizeWidth(arguments["cropFaceValue"] as? CGFloat ?? 400)
- self.faceManager?.setMinFaceSize(arguments["minFaceSize"] as? Int ?? 200)
- self.faceManager?.setNotFaceThreshold(arguments["notFaceValue"] as? CGFloat ?? 0.6)
- self.faceManager?.setMaxCropImageNum(arguments["maxCropImageNum"] as? Int ?? 1)
- self.faceManager?.setIsCheckQuality(arguments["isCheckFaceQuality"] as? Bool ?? true)
-
- let configModel = LivingConfigModel.sharedInstance()
- configModel?.liveActionArray = arguments["livenessTypeList"] as? NSMutableArray ?? []
- configModel?.isByOrder = !(arguments["isLivenessRandom"] as? Bool ?? true)
- configModel?.numOfLiveness = arguments["livenessRandomCount"] as? Int ?? 0
-
- return
- }
- else if call.method == "startFaceLiveness" {
-
- let rootViewController = UIApplication.shared.delegate?.window??.rootViewController
-
- if(nil == rootViewController){
- result(FlutterError(code: "500", message: "rootViewController is nil.", details: "rootViewController is not set."))
- return
- }
-
- let detectController = LivenessViewController()
- detectController.resultHandler = { [weak self] imageString in
- self?.eventSink?(imageString)
- }
-
- // let navController = UINavigationController(rootViewController: detectController)
- // navController.modalPresentationStyle = .fullScreen
- // rootViewController?.present(navController, animated: true, completion: nil)
-
- // let testController = TestViewController()
- // let navController = UINavigationController(rootViewController: testController)
- // navController.modalPresentationStyle = .fullScreen
-
- rootViewController?.present(detectController, animated: true, completion: nil)
-
- return
- }
- }
- }
- extension SwiftFltbdfacePlugin: FlutterStreamHandler {
- public func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
- eventSink = events
- return nil
- }
- public func onCancel(withArguments arguments: Any?) -> FlutterError? {
- eventSink = nil
- return nil
- }
- }
|