accurascan_kyc 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +635 -0
  3. package/accurascan-kyc.podspec +38 -0
  4. package/android/build.gradle +118 -0
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +18 -0
  7. package/android/src/main/java/com/accurascankyc/AccurascanKycModule.java +507 -0
  8. package/android/src/main/java/com/accurascankyc/AccurascanKycPackage.java +28 -0
  9. package/android/src/main/java/com/accurascankyc/ActivityFaceMatch.java +533 -0
  10. package/android/src/main/java/com/accurascankyc/BorderTextView.java +82 -0
  11. package/android/src/main/java/com/accurascankyc/OcrActivity.java +1263 -0
  12. package/android/src/main/java/com/accurascankyc/OcrResultActivity.java +736 -0
  13. package/android/src/main/java/com/accurascankyc/ReactNativeJson.java +123 -0
  14. package/android/src/main/java/com/accurascankyc/UnsafeOkHttpClient.java +57 -0
  15. package/android/src/main/res/drawable/btn_bg_gray.xml +6 -0
  16. package/android/src/main/res/drawable/btn_bg_red.xml +6 -0
  17. package/android/src/main/res/drawable/btn_bg_trasparent_bottom.xml +6 -0
  18. package/android/src/main/res/drawable/flip_camera_icon.png +0 -0
  19. package/android/src/main/res/drawable/ic_close.xml +5 -0
  20. package/android/src/main/res/drawable/round_border_rect.xml +12 -0
  21. package/android/src/main/res/drawable/splash.png +0 -0
  22. package/android/src/main/res/drawable-v24/ic_launcher_foreground.png +0 -0
  23. package/android/src/main/res/drawable-xhdpi/bg_home.png +0 -0
  24. package/android/src/main/res/drawable-xhdpi/ic_barcode.png +0 -0
  25. package/android/src/main/res/drawable-xhdpi/ic_biometric.png +0 -0
  26. package/android/src/main/res/drawable-xhdpi/ic_check.png +0 -0
  27. package/android/src/main/res/drawable-xhdpi/ic_liveness.png +0 -0
  28. package/android/src/main/res/drawable-xhdpi/ic_result.png +0 -0
  29. package/android/src/main/res/drawable-xhdpi/ic_scan.png +0 -0
  30. package/android/src/main/res/drawable-xhdpi/img_button_overlay.png +0 -0
  31. package/android/src/main/res/layout/activity_ocr_result.xml +18 -0
  32. package/android/src/main/res/layout/activity_splash.xml +26 -0
  33. package/android/src/main/res/layout/custom_frame_layout.xml +144 -0
  34. package/android/src/main/res/layout/ocr_activity.xml +28 -0
  35. package/android/src/main/res/layout-land/custom_frame_layout.xml +144 -0
  36. package/android/src/main/res/layout-land/ocr_activity.xml +41 -0
  37. package/android/src/main/res/menu/menu_land_port.xml +7 -0
  38. package/android/src/main/res/mipmap-hdpi/logo_loign.png +0 -0
  39. package/android/src/main/res/mipmap-mdpi/logo_loign.png +0 -0
  40. package/android/src/main/res/mipmap-xhdpi/ic_document_verified.png +0 -0
  41. package/android/src/main/res/mipmap-xhdpi/logo_loign.png +0 -0
  42. package/android/src/main/res/mipmap-xxhdpi/logo_loign.png +0 -0
  43. package/android/src/main/res/values/colors.xml +31 -0
  44. package/android/src/main/res/values/strings.xml +42 -0
  45. package/android/src/main/res/values/styles.xml +191 -0
  46. package/ios/AccurascanKyc-Bridging-Header.h +2 -0
  47. package/ios/AccurascanKyc.m +34 -0
  48. package/ios/AccurascanKyc.swift +649 -0
  49. package/ios/AccurascanKyc.xcodeproj/project.pbxproj +283 -0
  50. package/ios/AccurascanKyc.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  51. package/ios/FMController.swift +587 -0
  52. package/ios/LVController.swift +346 -0
  53. package/ios/MainStoryboard_iPhone.storyboard +338 -0
  54. package/ios/ViewController.swift +2686 -0
  55. package/ios/resources/back_icon.png +0 -0
  56. package/ios/resources/flip_camera_icon.png +0 -0
  57. package/ios/resources/flip_document_icon.png +0 -0
  58. package/ios/resources/ic_logo.png +0 -0
  59. package/lib/commonjs/index.js +13 -0
  60. package/lib/commonjs/index.js.map +1 -0
  61. package/lib/module/index.js +6 -0
  62. package/lib/module/index.js.map +1 -0
  63. package/lib/typescript/index.d.ts +3 -0
  64. package/lib/typescript/index.d.ts.map +1 -0
  65. package/package.json +161 -0
  66. package/src/index.tsx +5 -0
@@ -0,0 +1,649 @@
1
+ import Foundation
2
+ import UIKit
3
+ import AccuraOCR
4
+
5
+ struct lvfm {
6
+ static var face1: UIImage? = nil
7
+ static var face2: UIImage? = nil
8
+ static var face1Detect: NSFaceRegion? = nil
9
+ static var face2Detect: NSFaceRegion? = nil
10
+ static var faceImage: UIImage? = nil
11
+ static var No = 0
12
+ }
13
+
14
+ @objc(AccurascanKyc)
15
+ class AccurascanKyc: NSObject {
16
+
17
+ var goNativeCallBack: RCTResponseSenderBlock? = nil
18
+ var accuraCameraWrapper: AccuraCameraWrapper? = nil
19
+ var arrCountryList = NSMutableArray()
20
+ var goNativeArgs: NSArray = []
21
+ var accuraconfigs:NSDictionary = [:]
22
+ var accuraTitleMsg:NSDictionary = [:]
23
+ var viewController: UIViewController? = nil;
24
+ var viewControllerWindow: UIWindow? = nil;
25
+
26
+ @objc(multiply:withB:withResolver:withRejecter:)
27
+ func multiply(a: Float, b: Float, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
28
+ resolve(a*b)
29
+ }
30
+
31
+ static func getDocumentsDirectory() -> URL {
32
+ let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
33
+ return paths[0]
34
+ }
35
+ static func getImageFromUri(path: String) -> UIImage? {
36
+ print(path)
37
+ if let img = UIImage.init(contentsOfFile: path.replacingOccurrences(of: "file://", with: "")) {
38
+ return img;
39
+ }
40
+ return nil
41
+ }
42
+ static func randomString(length: Int) -> String {
43
+ let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
44
+ return String((0..<length).map{ _ in letters.randomElement()! })
45
+ }
46
+ static func getImageUri(img: UIImage, name: String?) -> String? {
47
+ var file = randomString(length: 6)
48
+ if let filename = name {
49
+ file = filename
50
+ }
51
+ if let data = img.jpegData(compressionQuality: 1.0) {
52
+ let filename = getDocumentsDirectory().appendingPathComponent("\(file).jpg")
53
+ try? data.write(to: filename)
54
+ print(filename.absoluteString)
55
+ return filename.absoluteString
56
+ }
57
+
58
+ return nil
59
+ }
60
+
61
+
62
+ @objc(getMetaData:)
63
+ func getMetaData(_ callback: @escaping RCTResponseSenderBlock) {
64
+ self.goNativeCallBack = callback
65
+ var results:[String: Any] = [:]
66
+ results["isValid"] = false
67
+ accuraCameraWrapper = AccuraCameraWrapper.init()
68
+ // DispatchQueue.main.async {
69
+ // self.accuraCameraWrapper?.setDefaultDialogs(true)
70
+ // self.accuraCameraWrapper?.showLogFile(true) // Set true to print log from KYC SDK
71
+ // }
72
+
73
+ // DispatchQueue.main.async {
74
+ DispatchQueue.main.async {
75
+ self.viewController = RCTPresentedViewController()!
76
+ self.viewControllerWindow = RCTKeyWindow()!
77
+ let sdkModel = self.accuraCameraWrapper!.loadEngine(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String)
78
+ if sdkModel!.i > 0 {
79
+ var countries:[Any] = []
80
+ results["sdk_version"] = ""
81
+ results["isValid"] = true
82
+ results["isOCR"] = sdkModel!.isOCREnable
83
+ results["isOCREnable"] = sdkModel!.isOCREnable
84
+ results["isBarcode"] = sdkModel!.isBarcodeEnable
85
+ results["isBankCard"] = sdkModel!.isBankCardEnable
86
+ results["isMRZ"] = sdkModel!.isMRZEnable
87
+
88
+ let countryListStr = self.accuraCameraWrapper!.getOCRList();
89
+ for item in countryListStr ?? [] {
90
+ let cntry = item as! NSDictionary
91
+ var country:[String: Any] = [:]
92
+
93
+ country["name"] = cntry.value(forKey: "country_name")
94
+ country["id"] = cntry.value(forKey: "country_id")
95
+ var cards:[[String: Any]] = []
96
+ for cd in cntry.value(forKey: "cards") as! NSArray {
97
+ let cardF = cd as! NSDictionary
98
+ var card:[String: Any] = [:]
99
+ card["name"] = cardF.value(forKey:"card_name")
100
+ card["id"] = cardF.value(forKey:"card_id")
101
+ card["type"] = cardF.value(forKey:"card_type")
102
+ cards.append(card)
103
+ }
104
+ country["cards"] = cards
105
+ countries.append(country)
106
+ }
107
+ results["countries"] = countries
108
+ if sdkModel!.isBarcodeEnable {
109
+ var barcodes:[[String: String]] = []
110
+ barcodes.append(["name": "ALL FORMATS","type": "ALL FORMATS"])
111
+ barcodes.append(["name": "EAN-8", "type": "EAN-8"])
112
+ barcodes.append(["name": "EAN-13", "type": "EAN-13"])
113
+ barcodes.append(["name": "PDF417", "type": "PDF417"])
114
+ barcodes.append(["name": "AZTEC", "type": "AZTEC"])
115
+ barcodes.append(["name": "CODE 128", "type": "CODE 128"])
116
+ barcodes.append(["name": "CODE 39", "type": "CODE 39"])
117
+ barcodes.append(["name": "CODE 93", "type": "CODE 93"])
118
+ barcodes.append(["name": "DATA MATRIX", "type": "DATA MATRIX"])
119
+ barcodes.append(["name": "QR CODE", "type": "QR CODE"])
120
+ barcodes.append(["name": "UPC-E", "type": "UPC-E"])
121
+ barcodes.append(["name": "UPC-A", "type": "UPC-A"])
122
+ barcodes.append(["name": "CODABAR", "type": "CODABAR"])
123
+ results["barcodes"] = barcodes
124
+ }
125
+ }
126
+ self.goNativeCallBack!([NSNull(), AccurascanKyc.convertJSONString(results: results)])
127
+ // }
128
+ }
129
+ }
130
+
131
+ @objc(startOcrWithCard:callback:)
132
+ func startOcrWithCard(_ argsNew: NSArray, callback: @escaping RCTResponseSenderBlock){
133
+ lvfm.faceImage = nil
134
+ DispatchQueue.main.async {
135
+ self.goNativeCallBack = callback;
136
+ self.goNativeArgs = argsNew;
137
+ let viewController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "ViewController") as! ViewController
138
+ viewController.countryid = self.goNativeArgs[0] as? Int
139
+ viewController.cardid = self.goNativeArgs[1] as? Int
140
+ viewController.isCheckScanOCR = true
141
+ if self.goNativeArgs[3] as! Int == 1 {
142
+ viewController.isBarCode = true
143
+ viewController.isBarcodeEnabled = false
144
+ }
145
+ viewController.cardType = self.goNativeArgs[3] as? Int
146
+ viewController.docName = self.goNativeArgs[2] as! String
147
+ viewController.callBack = self.goNativeCallBack
148
+ viewController.accuraTitleMsg = self.accuraTitleMsg
149
+ viewController.accuraErrorCode = self.accuraconfigs
150
+ viewController.modalPresentationStyle = .fullScreen
151
+ viewController.modalTransitionStyle = .coverVertical
152
+ self.getTopMostViewController()?.present(viewController, animated: true, completion: nil)
153
+ }
154
+ }
155
+
156
+ @objc(setupAccuraConfig:callback:)
157
+ func setupAccuraConfig(_ argsNew: NSArray, callback: @escaping RCTResponseSenderBlock){
158
+ self.goNativeCallBack = callback
159
+ self.goNativeArgs = argsNew;
160
+ print("\(self.goNativeArgs)")
161
+ let configs = goNativeArgs[0] as? NSDictionary
162
+ accuraTitleMsg = goNativeArgs[2] as! NSDictionary
163
+ accuraconfigs = goNativeArgs[1] as! NSDictionary
164
+ var results:[String: Any] = [:]
165
+
166
+
167
+ if configs?["setFaceBlurPercentage"] != nil {
168
+ let val = (configs?["setFaceBlurPercentage"] as? Int32)!
169
+ self.accuraCameraWrapper?.setFaceBlurPercentage(val)
170
+ }else{
171
+ self.accuraCameraWrapper?.setFaceBlurPercentage(80)
172
+ }
173
+ if configs?["setHologramDetection"] != nil {
174
+ let val = (configs?["setHologramDetection"] as? Bool)!
175
+ self.accuraCameraWrapper?.setHologramDetection(val)
176
+ }else{
177
+ self.accuraCameraWrapper?.setHologramDetection(true)
178
+ }
179
+ if configs?["setLowLightTolerance"] != nil {
180
+ let val = (configs?["setLowLightTolerance"] as? Int32)!
181
+ self.accuraCameraWrapper?.setLowLightTolerance(val)
182
+ }else{
183
+ self.accuraCameraWrapper?.setLowLightTolerance(10)
184
+ }
185
+ if configs?["setMotionThreshold"] != nil {
186
+ let val = (configs?["setMotionThreshold"] as? Int32)!
187
+ self.accuraCameraWrapper?.setMotionThreshold(val)
188
+ }else{
189
+ self.accuraCameraWrapper?.setMotionThreshold(25)
190
+ }
191
+ if configs?["setMinGlarePercentage"] != nil && configs?["setMaxGlarePercentage"] != nil {
192
+ let val1 = (configs?["setMinGlarePercentage"] as? Int32)!
193
+ let val2 = (configs?["setMaxGlarePercentage"] as? Int32)!
194
+
195
+ self.accuraCameraWrapper?.setGlarePercentage(val1, intMax: val2)
196
+ }else{
197
+ self.accuraCameraWrapper?.setGlarePercentage(6, intMax: 99)
198
+ }
199
+ if configs?["setBlurPercentage"] != nil {
200
+ let val = (configs?["setBlurPercentage"] as? Int32)!
201
+ self.accuraCameraWrapper?.setBlurPercentage(val)
202
+ }else{
203
+ self.accuraCameraWrapper?.setBlurPercentage(60)
204
+ }
205
+ if configs?["setCameraFacing"] != nil {
206
+ if configs?["setCameraFacing"] as? Int == 0{
207
+ self.accuraCameraWrapper?.setCameraFacing(.CAMERA_FACING_BACK)
208
+ }else if configs?["setCameraFacing"] as? Int == 1{
209
+ self.accuraCameraWrapper?.setCameraFacing(.CAMERA_FACING_FRONT)
210
+ }
211
+ }else{
212
+ self.accuraCameraWrapper?.setCameraFacing(.CAMERA_FACING_BACK)
213
+ }
214
+ if accuraconfigs["enableLogs"] != nil {
215
+ if accuraconfigs["enableLogs"] as? Int == 1 {
216
+ accuraCameraWrapper?.showLogFile(true)
217
+ } else{
218
+ accuraCameraWrapper?.showLogFile(false)
219
+ }
220
+ } else{
221
+ accuraCameraWrapper?.showLogFile(false)
222
+ }
223
+ // accuraCameraWrapper?.setCheckPhotoCopy(((configs!["isCheckPhotoCopy"] as? Bool)!))
224
+ // self.accuraCameraWrapper?.setCheckPhotoCopy(false, stCheckPhotoMessage: "")
225
+ // }
226
+ results["status"] = "configs setup sucessfully"
227
+ self.goNativeCallBack!([NSNull(),AccurascanKyc.convertJSONString(results:results)])
228
+ }
229
+
230
+ @objc(startBankCard:)
231
+ func startBankCard(_ callback: @escaping RCTResponseSenderBlock){
232
+ DispatchQueue.main.async {
233
+ self.goNativeCallBack = callback
234
+ let viewController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "ViewController") as! ViewController
235
+ viewController.isCheckScanOCR = true
236
+ viewController.cardType = 3
237
+ viewController.accuraTitleMsg = self.accuraTitleMsg
238
+ viewController.accuraErrorCode = self.accuraconfigs
239
+ viewController.callBack = self.goNativeCallBack
240
+ viewController.modalPresentationStyle = .fullScreen
241
+ viewController.modalTransitionStyle = .coverVertical
242
+ self.getTopMostViewController()?.present(viewController, animated: true, completion: nil)
243
+ }
244
+ }
245
+
246
+ @objc(startBarcode:callback:)
247
+ func startBarcode(_ argsNew: NSArray, callback: @escaping RCTResponseSenderBlock){
248
+ self.goNativeCallBack = callback;
249
+ self.goNativeArgs = argsNew;
250
+
251
+ DispatchQueue.main.async {
252
+ let viewController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "ViewController") as! ViewController
253
+ viewController.accuraTitleMsg = self.accuraTitleMsg
254
+ viewController.accuraErrorCode = self.accuraconfigs
255
+ viewController.callBack = self.goNativeCallBack
256
+ viewController.isBarCode = true
257
+ viewController.isBarcodeEnabled = true
258
+ viewController.reactViewController = self.viewController
259
+ viewController.selectedTypes = self.setSelectedTypes(types: self.goNativeArgs[0] as! String)
260
+ viewController.modalPresentationStyle = .fullScreen
261
+ viewController.modalTransitionStyle = .coverVertical
262
+ self.getTopMostViewController()?.present(viewController, animated: true, completion: nil)
263
+ }
264
+ }
265
+
266
+ @objc(startMRZ:callback:)
267
+ func startMRZ(_ argsNew: NSArray, callback: @escaping RCTResponseSenderBlock){
268
+ lvfm.faceImage = nil
269
+ self.goNativeCallBack = callback;
270
+ self.goNativeArgs = argsNew;
271
+ DispatchQueue.main.async {
272
+ let viewController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "ViewController") as! ViewController
273
+ if self.goNativeArgs[0] as! String == "passport_mrz" {
274
+ viewController.MRZDocType = 1
275
+ }else if self.goNativeArgs[0] as! String == "visa_card" {
276
+ viewController.MRZDocType = 3
277
+ }else if self.goNativeArgs[0] as! String == "id_mrz" {
278
+ viewController.MRZDocType = 2
279
+ }else{
280
+ viewController.MRZDocType = 0
281
+ }
282
+ viewController.callBack = self.goNativeCallBack
283
+ viewController.isCheckScanOCR = false
284
+ viewController.reactViewController = self.viewController
285
+ viewController.accuraTitleMsg = self.accuraTitleMsg
286
+ viewController.accuraErrorCode = self.accuraconfigs
287
+ print(self.accuraconfigs)
288
+ viewController.modalPresentationStyle = .fullScreen
289
+ viewController.modalTransitionStyle = .coverVertical
290
+ // DispatchQueue.main.async {
291
+ // viewController.modalPresentationStyle = .fullScreen
292
+ self.getTopMostViewController()?.present(viewController, animated: true, completion: nil)
293
+ }
294
+ }
295
+
296
+ @objc(startFaceMatch:callback:)
297
+ func startFaceMatch(_ argsNew: NSArray,callback: @escaping RCTResponseSenderBlock){
298
+ self.goNativeCallBack = callback
299
+ self.goNativeArgs = argsNew;
300
+ let face:NSDictionary
301
+ face = goNativeArgs[0] as! NSDictionary
302
+ EngineWrapper.faceEngineClose()
303
+ let fmInit = EngineWrapper.isEngineInit()
304
+ if !fmInit{
305
+ DispatchQueue.main.async {
306
+ EngineWrapper.faceEngineInit()
307
+ }
308
+ }
309
+ let fmValue = EngineWrapper.getEngineInitValue() //get engineWrapper load status
310
+ if fmValue == -20{
311
+ self.goNativeCallBack!(["key ot found", NSNull()])
312
+ // sendError(msg: "key not found")
313
+ }else if fmValue == -15{
314
+ self.goNativeCallBack!(["License Invalid", NSNull()])
315
+
316
+ // sendError(msg: "License Invalid")
317
+ }else{
318
+ DispatchQueue.main.async {
319
+ let FMController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "LVController") as! LVController
320
+ FMController.faceArgs = self.goNativeArgs[1] as! NSDictionary
321
+ FMController.isfacematch = true
322
+ FMController.callBack = self.goNativeCallBack
323
+ // FMController.faceImage = lvfm.faceImage
324
+ FMController.faceImage = AccurascanKyc.getImageFromUri(path: face["face_uri"] as! String)
325
+ FMController.reactViewController = self.viewController
326
+ FMController.win = self.viewControllerWindow
327
+ let nav = NavigationController(rootViewController: FMController)
328
+ self.viewControllerWindow?.rootViewController = nav
329
+ }
330
+ }
331
+ }
332
+
333
+ @objc(startLiveness:callback:)
334
+ func startLiveness(_ argsNew: NSArray,callback: @escaping RCTResponseSenderBlock){
335
+ DispatchQueue.main.async {
336
+ self.goNativeCallBack = callback
337
+ self.goNativeArgs = argsNew;
338
+ let face:NSDictionary
339
+ face = self.goNativeArgs[0] as! NSDictionary
340
+ EngineWrapper.faceEngineClose()
341
+ let fmInit = EngineWrapper.isEngineInit()
342
+ if !fmInit{
343
+ EngineWrapper.faceEngineInit()
344
+ }
345
+ let fmValue = EngineWrapper.getEngineInitValue() //get engineWrapper load status
346
+ if fmValue == -20{
347
+ self.goNativeCallBack!(["key ot found", NSNull()])
348
+ // sendError(msg: "key not found")
349
+ }else if fmValue == -15{
350
+ self.goNativeCallBack!(["License Invalid", NSNull()])
351
+ // sendError(msg: "License Invalid")
352
+ }else{
353
+ let LVController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "LVController") as! LVController
354
+ LVController.isLiveness = true
355
+ LVController.livenessConfig = self.goNativeArgs[1] as! NSDictionary
356
+ LVController.callBack = self.goNativeCallBack
357
+ // LVController.faceImage = gl.faceImage
358
+ if let face = AccurascanKyc.getImageFromUri(path: face["face_uri"] as! String) {
359
+ LVController.faceImage = face
360
+ }
361
+ LVController.reactViewController = self.viewController
362
+ LVController.win = self.viewControllerWindow
363
+ let nav = NavigationController(rootViewController: LVController)
364
+ self.viewControllerWindow?.rootViewController = nav
365
+ }
366
+ }
367
+ }
368
+
369
+ @objc(startFaceMatch2:callback:)
370
+ func startFaceMatch2(_ argsNew: NSArray,callback: @escaping RCTResponseSenderBlock){
371
+ DispatchQueue.main.async {
372
+ self.goNativeCallBack = callback;
373
+ self.goNativeArgs = argsNew;
374
+ EngineWrapper.faceEngineClose()
375
+ let fmInit = EngineWrapper.isEngineInit()
376
+ if !fmInit{
377
+ EngineWrapper.faceEngineInit()
378
+ }
379
+ let fmValue = EngineWrapper.getEngineInitValue() //get engineWrapper load status
380
+ if fmValue == -20{
381
+ self.sendError(msg: "Key not found")
382
+ return
383
+ }else if fmValue == -15{
384
+ self.sendError(msg: "License Invalid")
385
+ return
386
+ }
387
+ let accuraConfigs = self.goNativeArgs[0] as! [String:Any]
388
+ let face1 = AccurascanKyc.getImageFromUri(path:accuraConfigs["face1"] as! String)
389
+ let face2 = AccurascanKyc.getImageFromUri(path:accuraConfigs["face2"] as! String)
390
+ lvfm.face1 = face1
391
+ lvfm.face2 = face2
392
+ lvfm.No = 2
393
+ let FMController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "FMController") as! FMController
394
+ FMController.callBack = self.goNativeCallBack
395
+ FMController.facematch2 = true
396
+ FMController.faceArgs = self.goNativeArgs[1] as! NSDictionary
397
+
398
+ // FMController.livenessConfigs = self.goNativeArgs[1] as! [String: Any]
399
+ FMController.reactViewController = self.viewController
400
+ // FMController.win = self.viewControllerWindow
401
+
402
+ self.getTopMostViewController()?.present(FMController, animated: true, completion: nil)
403
+
404
+ // DispatchQueue.main.async {
405
+ // let nav = UINavigationController(rootViewController: FMController)
406
+ // nav.isNavigationBarHidden = true
407
+ // nav.modalPresentationStyle = .fullScreen
408
+ // nav.modalTransitionStyle = .coverVertical
409
+ // self.getTopMostViewController()?.present(nav, animated: true, completion: {
410
+ //
411
+ // })
412
+ // }
413
+ }
414
+ }
415
+
416
+ @objc(openGallery2:callback:)
417
+ func openGallery2(_ argsNew: NSArray,callback: @escaping RCTResponseSenderBlock){
418
+ DispatchQueue.main.async {
419
+ self.goNativeCallBack = callback;
420
+ self.goNativeArgs = argsNew;
421
+ EngineWrapper.faceEngineClose()
422
+ let fmInit = EngineWrapper.isEngineInit()
423
+ if !fmInit{
424
+ EngineWrapper.faceEngineInit()
425
+ }
426
+ let fmValue = EngineWrapper.getEngineInitValue() //get engineWrapper load status
427
+ if fmValue == -20{
428
+ self.sendError(msg: "Key not found")
429
+ return
430
+ }else if fmValue == -15{
431
+ self.sendError(msg: "License Invalid")
432
+ return
433
+ }
434
+ let accuraConfigs = self.goNativeArgs[0] as! [String:Any]
435
+ let face1 = AccurascanKyc.getImageFromUri(path: accuraConfigs["face1"] as! String)
436
+ let face2 = AccurascanKyc.getImageFromUri(path: accuraConfigs["face2"] as! String)
437
+ lvfm.face1 = face1
438
+ lvfm.face2 = face2
439
+ lvfm.No = 2
440
+ let FMController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "FMController") as! FMController
441
+ FMController.callBack = self.goNativeCallBack
442
+ FMController.gallery2 = true
443
+ FMController.reactViewController = self.viewController
444
+ // FMController.win = self.viewControllerWindow
445
+ self.getTopMostViewController()?.present(FMController, animated: true, completion: nil)
446
+
447
+ // DispatchQueue.main.async {
448
+ // let nav = UINavigationController(rootViewController: FMController)
449
+ // nav.isNavigationBarHidden = true
450
+ // nav.modalPresentationStyle = .fullScreen
451
+ // nav.modalTransitionStyle = .coverVertical
452
+ // self.getTopMostViewController()?.present(nav, animated: true, completion: {
453
+ //
454
+ // })
455
+ // }
456
+ }
457
+ }
458
+
459
+ @objc(openGallery1:callback:)
460
+ func openGallery1(_ argsNew: NSArray,callback: @escaping RCTResponseSenderBlock){
461
+ DispatchQueue.main.async {
462
+ self.goNativeCallBack = callback;
463
+ self.goNativeArgs = argsNew;
464
+ EngineWrapper.faceEngineClose()
465
+ let fmInit = EngineWrapper.isEngineInit()
466
+ if !fmInit{
467
+ DispatchQueue.main.async {
468
+ EngineWrapper.faceEngineInit()
469
+ }
470
+ }
471
+ let fmValue = EngineWrapper.getEngineInitValue() //get engineWrapper load status
472
+ if fmValue == -20{
473
+ // goNativeCallBack!(FlutterError.init(code: "101", message: "Key not found", details: nil))
474
+ self.sendError(msg: "Key not found")
475
+ return
476
+ }else if fmValue == -15{
477
+ // goNativeCallBack!(FlutterError.init(code: "101", message: "License Invalid", details: nil))
478
+ self.sendError(msg: "License Invalid")
479
+ return
480
+ }
481
+ let accuraConfigs = self.goNativeArgs[0] as! [String:Any]
482
+ let face1 = AccurascanKyc.getImageFromUri(path:accuraConfigs["face1"] as! String)
483
+ let face2 = AccurascanKyc.getImageFromUri(path: accuraConfigs["face2"] as! String)
484
+ lvfm.face1 = face1
485
+ lvfm.face2 = face2
486
+ lvfm.No = 1
487
+ let FMController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "FMController") as! FMController
488
+ FMController.callBack = self.goNativeCallBack
489
+ FMController.gallery1 = true
490
+ FMController.reactViewController = self.viewController
491
+ // FMController.win = self.viewControllerWindow
492
+ self.getTopMostViewController()?.present(FMController, animated: true, completion: nil)
493
+
494
+ // DispatchQueue.main.async {
495
+ // let nav = UINavigationController(rootViewController: FMController)
496
+ // nav.isNavigationBarHidden = true
497
+ // nav.modalPresentationStyle = .fullScreen
498
+ // nav.modalTransitionStyle = .coverVertical
499
+ // self.getTopMostViewController()?.present(nav, animated: true, completion: {
500
+ //
501
+ // })
502
+ // }
503
+ }
504
+ }
505
+ @objc(startFaceMatch1:callback:)
506
+ func startFaceMatch1(_ argsNew: NSArray,callback: @escaping RCTResponseSenderBlock){
507
+ DispatchQueue.main.async {
508
+ self.goNativeCallBack = callback;
509
+ self.goNativeArgs = argsNew;
510
+ EngineWrapper.faceEngineClose()
511
+ let fmInit = EngineWrapper.isEngineInit()
512
+ if !fmInit{
513
+ EngineWrapper.faceEngineInit()
514
+ }
515
+ let fmValue = EngineWrapper.getEngineInitValue() //get engineWrapper load status
516
+ if fmValue == -20{
517
+ self.sendError(msg: "Key not found")
518
+ return
519
+ }else if fmValue == -15{
520
+ self.sendError(msg: "License Invalid")
521
+ return
522
+ }
523
+ let accuraConfigs1 = self.goNativeArgs[0] as! [String:Any]
524
+ print(accuraConfigs1)
525
+ let face1 = AccurascanKyc.getImageFromUri(path: accuraConfigs1["face1"] as! String)
526
+ let face2 = AccurascanKyc.getImageFromUri(path: accuraConfigs1["face2"] as! String)
527
+ lvfm.face1 = face1
528
+ lvfm.face2 = face2
529
+ lvfm.No = 1
530
+ let FMController = UIStoryboard(name: "MainStoryboard_iPhone", bundle: nil).instantiateViewController(withIdentifier: "FMController") as! FMController
531
+ FMController.callBack = self.goNativeCallBack
532
+ FMController.faceMatch1 = true
533
+ FMController.faceArgs = self.goNativeArgs[1] as! NSDictionary
534
+
535
+ // FMController.livenessConfigs = self.goNativeArgs[1] as! [String: Any]
536
+ FMController.reactViewController = self.viewController
537
+ // FMController.win = self.viewControllerWindow
538
+
539
+ self.getTopMostViewController()?.present(FMController, animated: true, completion: nil)
540
+
541
+ // DispatchQueue.main.async {
542
+ // let nav = UINavigationController(rootViewController: FMController)
543
+ // nav.isNavigationBarHidden = true
544
+ // nav.modalPresentationStyle = .fullScreen
545
+ // nav.modalTransitionStyle = .coverVertical
546
+ // self.getTopMostViewController()?.present(nav, animated: true, completion: {
547
+ //
548
+ // })
549
+ // }
550
+ }
551
+ }
552
+
553
+
554
+
555
+ static func convertJSONString(results: [String: Any]) -> String {
556
+
557
+ if let theJSONData = try? JSONSerialization.data( withJSONObject: results, options: .prettyPrinted ),
558
+ let theJSONText = String(data: theJSONData, encoding: String.Encoding.ascii) {
559
+ print("JSON string = \n\(theJSONText)")
560
+ return theJSONText.components(separatedBy: .newlines).joined();
561
+ }
562
+ return "{}"
563
+ }
564
+
565
+ func sendError(msg: String) {
566
+
567
+ self.goNativeCallBack!([msg as Any, NSNull()])
568
+ }
569
+
570
+ func getTopMostViewController() -> UIViewController? {
571
+ var topMostViewController = UIApplication.shared.keyWindow?.rootViewController
572
+
573
+ while let presentedViewController = topMostViewController?.presentedViewController {
574
+ topMostViewController = presentedViewController
575
+ }
576
+
577
+ return topMostViewController
578
+ }
579
+
580
+ func setSelectedTypes(types: String) -> BarcodeType {
581
+ switch types
582
+ {
583
+ case "ALL FORMATS":
584
+ return .all
585
+ case "EAN-8":
586
+ return .ean8
587
+ case "EAN-13":
588
+ return .ean13
589
+ case "PDF417":
590
+ return .pdf417
591
+ case "AZTEC":
592
+ return .aztec
593
+ case "CODE 128":
594
+ return .code128
595
+ case "CODE 39":
596
+ return .code39
597
+ case "CODE 93":
598
+ return .code93
599
+ case "DATA MATRIX":
600
+ return .dataMatrix
601
+ case "ITF":
602
+ return .itf
603
+ case "QR CODE":
604
+ return .qrcode
605
+ case "UPC-E":
606
+ return .upce
607
+ case "UPC-A":
608
+ return .upca
609
+ case "CODABAR":
610
+ return .codabar
611
+ default:
612
+ return .all
613
+ }
614
+ }
615
+
616
+ }
617
+ class NavigationController: UINavigationController {
618
+
619
+ override var shouldAutorotate: Bool {
620
+ return false
621
+ }
622
+
623
+ override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
624
+ return getCurrentOrientation(isMask: true) as! UIInterfaceOrientationMask
625
+ }
626
+
627
+ override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
628
+ return getCurrentOrientation(isMask: false) as! UIInterfaceOrientation
629
+ }
630
+
631
+ func getCurrentOrientation(isMask: Bool) -> Any {
632
+ let orientation = "portrait"
633
+
634
+ if(orientation.contains("portrait")) {
635
+ if isMask {
636
+ return UIInterfaceOrientationMask.portrait
637
+ } else {
638
+ return UIInterfaceOrientation.portrait
639
+ }
640
+ } else {
641
+ if isMask {
642
+ return UIInterfaceOrientationMask.landscape
643
+ } else {
644
+ return UIInterfaceOrientation.landscapeRight
645
+ }
646
+ }
647
+ }
648
+
649
+ }