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.
- package/LICENSE +20 -0
- package/README.md +635 -0
- package/accurascan-kyc.podspec +38 -0
- package/android/build.gradle +118 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +18 -0
- package/android/src/main/java/com/accurascankyc/AccurascanKycModule.java +507 -0
- package/android/src/main/java/com/accurascankyc/AccurascanKycPackage.java +28 -0
- package/android/src/main/java/com/accurascankyc/ActivityFaceMatch.java +533 -0
- package/android/src/main/java/com/accurascankyc/BorderTextView.java +82 -0
- package/android/src/main/java/com/accurascankyc/OcrActivity.java +1263 -0
- package/android/src/main/java/com/accurascankyc/OcrResultActivity.java +736 -0
- package/android/src/main/java/com/accurascankyc/ReactNativeJson.java +123 -0
- package/android/src/main/java/com/accurascankyc/UnsafeOkHttpClient.java +57 -0
- package/android/src/main/res/drawable/btn_bg_gray.xml +6 -0
- package/android/src/main/res/drawable/btn_bg_red.xml +6 -0
- package/android/src/main/res/drawable/btn_bg_trasparent_bottom.xml +6 -0
- package/android/src/main/res/drawable/flip_camera_icon.png +0 -0
- package/android/src/main/res/drawable/ic_close.xml +5 -0
- package/android/src/main/res/drawable/round_border_rect.xml +12 -0
- package/android/src/main/res/drawable/splash.png +0 -0
- package/android/src/main/res/drawable-v24/ic_launcher_foreground.png +0 -0
- package/android/src/main/res/drawable-xhdpi/bg_home.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_barcode.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_biometric.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_check.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_liveness.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_result.png +0 -0
- package/android/src/main/res/drawable-xhdpi/ic_scan.png +0 -0
- package/android/src/main/res/drawable-xhdpi/img_button_overlay.png +0 -0
- package/android/src/main/res/layout/activity_ocr_result.xml +18 -0
- package/android/src/main/res/layout/activity_splash.xml +26 -0
- package/android/src/main/res/layout/custom_frame_layout.xml +144 -0
- package/android/src/main/res/layout/ocr_activity.xml +28 -0
- package/android/src/main/res/layout-land/custom_frame_layout.xml +144 -0
- package/android/src/main/res/layout-land/ocr_activity.xml +41 -0
- package/android/src/main/res/menu/menu_land_port.xml +7 -0
- package/android/src/main/res/mipmap-hdpi/logo_loign.png +0 -0
- package/android/src/main/res/mipmap-mdpi/logo_loign.png +0 -0
- package/android/src/main/res/mipmap-xhdpi/ic_document_verified.png +0 -0
- package/android/src/main/res/mipmap-xhdpi/logo_loign.png +0 -0
- package/android/src/main/res/mipmap-xxhdpi/logo_loign.png +0 -0
- package/android/src/main/res/values/colors.xml +31 -0
- package/android/src/main/res/values/strings.xml +42 -0
- package/android/src/main/res/values/styles.xml +191 -0
- package/ios/AccurascanKyc-Bridging-Header.h +2 -0
- package/ios/AccurascanKyc.m +34 -0
- package/ios/AccurascanKyc.swift +649 -0
- package/ios/AccurascanKyc.xcodeproj/project.pbxproj +283 -0
- package/ios/AccurascanKyc.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/ios/FMController.swift +587 -0
- package/ios/LVController.swift +346 -0
- package/ios/MainStoryboard_iPhone.storyboard +338 -0
- package/ios/ViewController.swift +2686 -0
- package/ios/resources/back_icon.png +0 -0
- package/ios/resources/flip_camera_icon.png +0 -0
- package/ios/resources/flip_document_icon.png +0 -0
- package/ios/resources/ic_logo.png +0 -0
- package/lib/commonjs/index.js +13 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/index.d.ts +3 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +161 -0
- 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
|
+
}
|