assentify-sdk-react-native 0.0.1

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 (195) hide show
  1. package/LICENSE +3 -0
  2. package/README.md +65 -0
  3. package/android/build.gradle +111 -0
  4. package/android/gradle.properties +9 -0
  5. package/android/src/main/AndroidManifest.xml +55 -0
  6. package/android/src/main/java/com/assentifysdk/AndroidProgressBarModule.kt +33 -0
  7. package/android/src/main/java/com/assentifysdk/AssentifySdkBaseModule.kt +39 -0
  8. package/android/src/main/java/com/assentifysdk/AssentifySdkModule.kt +432 -0
  9. package/android/src/main/java/com/assentifysdk/AssentifySdkPackage.kt +19 -0
  10. package/android/src/main/java/com/assentifysdk/FaceMatchActivity.kt +309 -0
  11. package/android/src/main/java/com/assentifysdk/ImageToBase64Converter.kt +40 -0
  12. package/android/src/main/java/com/assentifysdk/ReactApplicationContextObject.kt +14 -0
  13. package/android/src/main/java/com/assentifysdk/ScanIDActivity.kt +431 -0
  14. package/android/src/main/java/com/assentifysdk/ScanOtherActivity.kt +328 -0
  15. package/android/src/main/java/com/assentifysdk/ScanPassportActivity.kt +364 -0
  16. package/android/src/main/java/com/assentifysdk/StepsKeys.kt +91 -0
  17. package/android/src/main/res/drawable/back_icon.png +0 -0
  18. package/android/src/main/res/drawable/button_rounded_background.xml +6 -0
  19. package/android/src/main/res/drawable/card.gif +0 -0
  20. package/android/src/main/res/drawable/expire.png +0 -0
  21. package/android/src/main/res/drawable/id.gif +0 -0
  22. package/android/src/main/res/drawable/id_warning.png +0 -0
  23. package/android/src/main/res/drawable/info_icon.png +0 -0
  24. package/android/src/main/res/drawable/info_rounded_background.xml +6 -0
  25. package/android/src/main/res/drawable/passport.gif +0 -0
  26. package/android/src/main/res/drawable/rounded_background.xml +3 -0
  27. package/android/src/main/res/drawable/sending.png +0 -0
  28. package/android/src/main/res/drawable/warning.png +0 -0
  29. package/android/src/main/res/drawable/zoom_in.png +0 -0
  30. package/android/src/main/res/drawable/zoom_out.png +0 -0
  31. package/android/src/main/res/layout/activity_face_scan.xml +242 -0
  32. package/android/src/main/res/layout/activity_scan.xml +297 -0
  33. package/android/src/main/res/raw/sending_video.MP4 +0 -0
  34. package/android/src/main/res/values/colors.xml +8 -0
  35. package/android/src/main/res/values/strings.xml +3 -0
  36. package/android/src/main/res/values/styles.xml +4 -0
  37. package/assentify-sdk.podspec +43 -0
  38. package/ios/AssentifySdkBaseModule.swift +15 -0
  39. package/ios/Info.plist +27 -0
  40. package/ios/NativeAssentifySdk-Bridging-Header.h +3 -0
  41. package/ios/NativeAssentifySdk.mm +45 -0
  42. package/ios/NativeAssentifySdk.swift +460 -0
  43. package/ios/Resources/card.gif +0 -0
  44. package/ios/Resources/expire.png +0 -0
  45. package/ios/Resources/id.gif +0 -0
  46. package/ios/Resources/id_warning.png +0 -0
  47. package/ios/Resources/info_icon.png +0 -0
  48. package/ios/Resources/passport.gif +0 -0
  49. package/ios/Resources/sending.png +0 -0
  50. package/ios/Resources/warning.png +0 -0
  51. package/ios/Resources/zoom_in.png +0 -0
  52. package/ios/Resources/zoom_out.png +0 -0
  53. package/ios/UIComponents/RNIOSProgressBar.h +4 -0
  54. package/ios/UIComponents/RNIOSProgressBar.m +34 -0
  55. package/ios/UIComponents/RNPassportScanner.m +26 -0
  56. package/ios/UIComponents/RNPassportScanner.swift +245 -0
  57. package/ios/UIComponents/RNTMapManager.h +4 -0
  58. package/ios/UIComponents/RNTMapManager.m +19 -0
  59. package/ios/View/DataDecoder.swift +469 -0
  60. package/ios/View/FaceMatchController.swift +258 -0
  61. package/ios/View/IDCardController.swift +360 -0
  62. package/ios/View/OtherController.swift +283 -0
  63. package/ios/View/PassportController.swift +302 -0
  64. package/ios/View/UI.swift +298 -0
  65. package/lib/commonjs/AssentifyProvider.js +202 -0
  66. package/lib/commonjs/AssentifyProvider.js.map +1 -0
  67. package/lib/commonjs/AssentifyWrapper.js +76 -0
  68. package/lib/commonjs/AssentifyWrapper.js.map +1 -0
  69. package/lib/commonjs/Language.js +27 -0
  70. package/lib/commonjs/Language.js.map +1 -0
  71. package/lib/commonjs/helpers/index.js +2 -0
  72. package/lib/commonjs/helpers/index.js.map +1 -0
  73. package/lib/commonjs/helpers/parsers/FaceMatchParser.js +27 -0
  74. package/lib/commonjs/helpers/parsers/FaceMatchParser.js.map +1 -0
  75. package/lib/commonjs/helpers/parsers/IDCardParser.js +25 -0
  76. package/lib/commonjs/helpers/parsers/IDCardParser.js.map +1 -0
  77. package/lib/commonjs/helpers/parsers/OtherIDParser.js +29 -0
  78. package/lib/commonjs/helpers/parsers/OtherIDParser.js.map +1 -0
  79. package/lib/commonjs/helpers/parsers/PassportParser.js +25 -0
  80. package/lib/commonjs/helpers/parsers/PassportParser.js.map +1 -0
  81. package/lib/commonjs/index.js +49 -0
  82. package/lib/commonjs/index.js.map +1 -0
  83. package/lib/commonjs/types.js +42 -0
  84. package/lib/commonjs/types.js.map +1 -0
  85. package/lib/module/AssentifyProvider.js +193 -0
  86. package/lib/module/AssentifyProvider.js.map +1 -0
  87. package/lib/module/AssentifyWrapper.js +70 -0
  88. package/lib/module/AssentifyWrapper.js.map +1 -0
  89. package/lib/module/Language.js +21 -0
  90. package/lib/module/Language.js.map +1 -0
  91. package/lib/module/helpers/index.js +2 -0
  92. package/lib/module/helpers/index.js.map +1 -0
  93. package/lib/module/helpers/parsers/FaceMatchParser.js +21 -0
  94. package/lib/module/helpers/parsers/FaceMatchParser.js.map +1 -0
  95. package/lib/module/helpers/parsers/IDCardParser.js +19 -0
  96. package/lib/module/helpers/parsers/IDCardParser.js.map +1 -0
  97. package/lib/module/helpers/parsers/OtherIDParser.js +23 -0
  98. package/lib/module/helpers/parsers/OtherIDParser.js.map +1 -0
  99. package/lib/module/helpers/parsers/PassportParser.js +19 -0
  100. package/lib/module/helpers/parsers/PassportParser.js.map +1 -0
  101. package/lib/module/index.js +6 -0
  102. package/lib/module/index.js.map +1 -0
  103. package/lib/module/types.js +36 -0
  104. package/lib/module/types.js.map +1 -0
  105. package/lib/typescript/babel.config.d.ts +3 -0
  106. package/lib/typescript/babel.config.d.ts.map +1 -0
  107. package/lib/typescript/commitlint.config.d.ts +7 -0
  108. package/lib/typescript/commitlint.config.d.ts.map +1 -0
  109. package/lib/typescript/example/babel.config.d.ts +8 -0
  110. package/lib/typescript/example/babel.config.d.ts.map +1 -0
  111. package/lib/typescript/example/index.d.ts +2 -0
  112. package/lib/typescript/example/index.d.ts.map +1 -0
  113. package/lib/typescript/example/jest.config.d.ts +2 -0
  114. package/lib/typescript/example/jest.config.d.ts.map +1 -0
  115. package/lib/typescript/example/metro.config.d.ts +3 -0
  116. package/lib/typescript/example/metro.config.d.ts.map +1 -0
  117. package/lib/typescript/example/react-native.config.d.ts +6 -0
  118. package/lib/typescript/example/react-native.config.d.ts.map +1 -0
  119. package/lib/typescript/example/src/App.d.ts +3 -0
  120. package/lib/typescript/example/src/App.d.ts.map +1 -0
  121. package/lib/typescript/example/src/Home.d.ts +4 -0
  122. package/lib/typescript/example/src/Home.d.ts.map +1 -0
  123. package/lib/typescript/example/src/navigator.d.ts +4 -0
  124. package/lib/typescript/example/src/navigator.d.ts.map +1 -0
  125. package/lib/typescript/lib/commonjs/AssentifyProvider.d.ts +3 -0
  126. package/lib/typescript/lib/commonjs/AssentifyProvider.d.ts.map +1 -0
  127. package/lib/typescript/lib/commonjs/AssentifyWrapper.d.ts +11 -0
  128. package/lib/typescript/lib/commonjs/AssentifyWrapper.d.ts.map +1 -0
  129. package/lib/typescript/lib/commonjs/Language.d.ts +22 -0
  130. package/lib/typescript/lib/commonjs/Language.d.ts.map +1 -0
  131. package/lib/typescript/lib/commonjs/helpers/index.d.ts +1 -0
  132. package/lib/typescript/lib/commonjs/helpers/index.d.ts.map +1 -0
  133. package/lib/typescript/lib/commonjs/helpers/parsers/FaceMatchParser.d.ts +12 -0
  134. package/lib/typescript/lib/commonjs/helpers/parsers/FaceMatchParser.d.ts.map +1 -0
  135. package/lib/typescript/lib/commonjs/helpers/parsers/IDCardParser.d.ts +11 -0
  136. package/lib/typescript/lib/commonjs/helpers/parsers/IDCardParser.d.ts.map +1 -0
  137. package/lib/typescript/lib/commonjs/helpers/parsers/OtherIDParser.d.ts +13 -0
  138. package/lib/typescript/lib/commonjs/helpers/parsers/OtherIDParser.d.ts.map +1 -0
  139. package/lib/typescript/lib/commonjs/helpers/parsers/PassportParser.d.ts +11 -0
  140. package/lib/typescript/lib/commonjs/helpers/parsers/PassportParser.d.ts.map +1 -0
  141. package/lib/typescript/lib/commonjs/index.d.ts +2 -0
  142. package/lib/typescript/lib/commonjs/index.d.ts.map +1 -0
  143. package/lib/typescript/lib/commonjs/types.d.ts +18 -0
  144. package/lib/typescript/lib/commonjs/types.d.ts.map +1 -0
  145. package/lib/typescript/lib/module/AssentifyProvider.d.ts +3 -0
  146. package/lib/typescript/lib/module/AssentifyProvider.d.ts.map +1 -0
  147. package/lib/typescript/lib/module/AssentifyWrapper.d.ts +10 -0
  148. package/lib/typescript/lib/module/AssentifyWrapper.d.ts.map +1 -0
  149. package/lib/typescript/lib/module/Language.d.ts +21 -0
  150. package/lib/typescript/lib/module/Language.d.ts.map +1 -0
  151. package/lib/typescript/lib/module/helpers/index.d.ts +1 -0
  152. package/lib/typescript/lib/module/helpers/index.d.ts.map +1 -0
  153. package/lib/typescript/lib/module/helpers/parsers/FaceMatchParser.d.ts +11 -0
  154. package/lib/typescript/lib/module/helpers/parsers/FaceMatchParser.d.ts.map +1 -0
  155. package/lib/typescript/lib/module/helpers/parsers/IDCardParser.d.ts +10 -0
  156. package/lib/typescript/lib/module/helpers/parsers/IDCardParser.d.ts.map +1 -0
  157. package/lib/typescript/lib/module/helpers/parsers/OtherIDParser.d.ts +12 -0
  158. package/lib/typescript/lib/module/helpers/parsers/OtherIDParser.d.ts.map +1 -0
  159. package/lib/typescript/lib/module/helpers/parsers/PassportParser.d.ts +10 -0
  160. package/lib/typescript/lib/module/helpers/parsers/PassportParser.d.ts.map +1 -0
  161. package/lib/typescript/lib/module/index.d.ts +12 -0
  162. package/lib/typescript/lib/module/index.d.ts.map +1 -0
  163. package/lib/typescript/lib/module/types.d.ts +17 -0
  164. package/lib/typescript/lib/module/types.d.ts.map +1 -0
  165. package/lib/typescript/src/AssentifyProvider.d.ts +4 -0
  166. package/lib/typescript/src/AssentifyProvider.d.ts.map +1 -0
  167. package/lib/typescript/src/AssentifyWrapper.d.ts +12 -0
  168. package/lib/typescript/src/AssentifyWrapper.d.ts.map +1 -0
  169. package/lib/typescript/src/Language.d.ts +22 -0
  170. package/lib/typescript/src/Language.d.ts.map +1 -0
  171. package/lib/typescript/src/helpers/index.d.ts +1 -0
  172. package/lib/typescript/src/helpers/index.d.ts.map +1 -0
  173. package/lib/typescript/src/helpers/parsers/FaceMatchParser.d.ts +4 -0
  174. package/lib/typescript/src/helpers/parsers/FaceMatchParser.d.ts.map +1 -0
  175. package/lib/typescript/src/helpers/parsers/IDCardParser.d.ts +4 -0
  176. package/lib/typescript/src/helpers/parsers/IDCardParser.d.ts.map +1 -0
  177. package/lib/typescript/src/helpers/parsers/OtherIDParser.d.ts +4 -0
  178. package/lib/typescript/src/helpers/parsers/OtherIDParser.d.ts.map +1 -0
  179. package/lib/typescript/src/helpers/parsers/PassportParser.d.ts +4 -0
  180. package/lib/typescript/src/helpers/parsers/PassportParser.d.ts.map +1 -0
  181. package/lib/typescript/src/index.d.ts +12 -0
  182. package/lib/typescript/src/index.d.ts.map +1 -0
  183. package/lib/typescript/src/types.d.ts +308 -0
  184. package/lib/typescript/src/types.d.ts.map +1 -0
  185. package/package.json +201 -0
  186. package/src/AssentifyProvider.tsx +189 -0
  187. package/src/AssentifyWrapper.ts +142 -0
  188. package/src/Language.ts +22 -0
  189. package/src/helpers/index.ts +1 -0
  190. package/src/helpers/parsers/FaceMatchParser.ts +28 -0
  191. package/src/helpers/parsers/IDCardParser.ts +27 -0
  192. package/src/helpers/parsers/OtherIDParser.ts +31 -0
  193. package/src/helpers/parsers/PassportParser.ts +27 -0
  194. package/src/index.ts +6 -0
  195. package/src/types.ts +373 -0
@@ -0,0 +1,283 @@
1
+
2
+
3
+ import UIKit
4
+ import AVFoundation
5
+ import AssentifySdk
6
+
7
+ class OtherController: UIViewController ,ScanOtherDelegate , ChildViewControllerDelegate
8
+ {
9
+
10
+
11
+
12
+
13
+ private var isDone:Bool = false;
14
+ private var assentifySdk:AssentifySdk?;
15
+ private var start:Bool = false;
16
+ private var showCountDown:Bool = false;
17
+ var infoLabel : UILabel?;
18
+ var infoImage : UIImageView?;
19
+ var popUpMessage : UIView?;
20
+ private var holdHandColor: String;
21
+ private var processingColor: String;
22
+ private var language: String;
23
+ private var apiKey: String;
24
+ private var nativeAssentifySdk:NativeAssentifySdk?;
25
+
26
+
27
+
28
+
29
+ init(assentifySdk: AssentifySdk,nativeAssentifySdk:NativeAssentifySdk,holdHandColor: String,processingColor: String, language: String,showCountDown:Bool,apiKey:String) {
30
+ self.assentifySdk = assentifySdk
31
+ self.nativeAssentifySdk = nativeAssentifySdk
32
+ self.holdHandColor = holdHandColor
33
+ self.processingColor = processingColor
34
+ self.language = language
35
+ self.showCountDown = showCountDown
36
+ self.apiKey = apiKey
37
+ super.init(nibName: nil, bundle: nil)
38
+ }
39
+
40
+
41
+ required init?(coder: NSCoder) {
42
+ fatalError("init(coder:) has not been implemented")
43
+ }
44
+
45
+ override var prefersStatusBarHidden: Bool {
46
+ return false
47
+ }
48
+ override func viewDidLoad() {
49
+ super.viewDidLoad()
50
+ self.view.backgroundColor = .clear
51
+ UIApplication.shared.isStatusBarHidden = false;
52
+ DispatchQueue.main.async {
53
+ var scanOther = self.assentifySdk?.startScanOthers(scanOtherDelegate: self,language:self.language)
54
+ self.addChild(scanOther!)
55
+ self.view.addSubview(scanOther!.view)
56
+ scanOther!.view.translatesAutoresizingMaskIntoConstraints = false
57
+ NSLayoutConstraint.activate([
58
+ scanOther!.view.topAnchor.constraint(equalTo: self.view.topAnchor,constant: 0),
59
+ scanOther!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
60
+ scanOther!.view.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
61
+ scanOther!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
62
+ ])
63
+ scanOther!.didMove(toParent: self)
64
+ (self.infoLabel, self.infoImage) = showInfo(view: self.view, text: "Please Present Your ID",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor,initialImageName:"info_icon")
65
+ showNavigationBarWithBackArrow(view: self.view, target: self, action: #selector(self.backButtonTapped), initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor,title: "ID Capture")
66
+
67
+ }
68
+ }
69
+ @objc func backButtonTapped() {
70
+ triggerEvent(eventName:"onBackClick",dataModel:nil)
71
+ DispatchQueue.main.async {
72
+ self.dismiss(animated: false)
73
+ }
74
+ }
75
+
76
+ func dismissParentViewController() {
77
+ triggerEvent(eventName:"onBackClick",dataModel:nil)
78
+ DispatchQueue.main.async {
79
+ self.dismiss(animated: false)
80
+ }
81
+
82
+ }
83
+
84
+ @objc func dismissPopUpMessage() {
85
+ DispatchQueue.main.async {
86
+ if(!self.start){
87
+ self.popUpMessage!.removeFromSuperview();
88
+ (self.infoLabel, self.infoImage) = showInfo(view: self.view, text: "Please Present Your ID",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor,initialImageName:"info_icon")
89
+ }
90
+ }
91
+
92
+ }
93
+
94
+ func onSend() {
95
+ triggerEvent(eventName:"onSend",dataModel:nil)
96
+ DispatchQueue.main.async {
97
+ if(self.popUpMessage != nil){
98
+ self.popUpMessage!.removeFromSuperview();
99
+ }
100
+ self.start = true;
101
+ self.popUpMessage = showPopUpMessage(view: self.view, title: "Transmitting", subTitle: "",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor, iconName: "id", isGif: true,target: self, action: #selector(self.dismissPopUpMessage))
102
+ }
103
+ }
104
+
105
+ func onError(dataModel: RemoteProcessingModel) {
106
+ triggerEvent(eventName:"onError",dataModel:dataModel)
107
+ DispatchQueue.main.async {
108
+ self.start = false;
109
+ self.popUpMessage!.removeFromSuperview();
110
+ self.popUpMessage = showPopUpMessage(view: self.view, title: "Unable to extract", subTitle: "Let's try again",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor, iconName: "warning", isGif: false,target: self, action: #selector(self.dismissPopUpMessage))
111
+ }
112
+ }
113
+
114
+
115
+ func onRetry(dataModel: RemoteProcessingModel) {
116
+ triggerEvent(eventName:"onRetry",dataModel:dataModel)
117
+ DispatchQueue.main.async {
118
+ self.start = false;
119
+ self.popUpMessage!.removeFromSuperview();
120
+ self.popUpMessage = showPopUpMessage(view: self.view, title: "Unable to extract", subTitle: "Let's try again",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor, iconName: "warning", isGif: false,target: self, action: #selector(self.dismissPopUpMessage))
121
+ }
122
+ }
123
+
124
+ func onLivenessUpdate(dataModel: RemoteProcessingModel) {
125
+ triggerEvent(eventName:"onLivenessUpdate",dataModel:dataModel)
126
+ DispatchQueue.main.async {
127
+ self.start = false;
128
+ self.popUpMessage!.removeFromSuperview();
129
+ self.popUpMessage = showPopUpMessage(view: self.view, title: "Failed ID Check", subTitle: "Please real ID (Not copy)",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor, iconName: "id_warning", isGif: false,target: self, action: #selector(self.dismissPopUpMessage))
130
+ }
131
+ }
132
+
133
+
134
+ func onClipPreparationComplete(dataModel: RemoteProcessingModel) {
135
+ triggerEvent(eventName:"onClipPreparationComplete",dataModel:dataModel)
136
+ }
137
+
138
+ func onStatusUpdated(dataModel: RemoteProcessingModel) {
139
+ triggerEvent(eventName:"onStatusUpdated",dataModel:dataModel)
140
+ }
141
+
142
+ func onUpdated(dataModel: RemoteProcessingModel) {
143
+ triggerEvent(eventName:"onUpdated",dataModel:dataModel)
144
+ }
145
+
146
+
147
+ func onComplete(dataModel: OtherResponseModel) {
148
+ if(!isDone){
149
+ isDone = true;
150
+ if let outputProperties = try? JSONSerialization.data(withJSONObject: dataModel.otherExtractedModel?.transformedProperties, options: []) {
151
+ UserDefaults.standard.set(outputProperties, forKey: "OutputPropertiesDoc")
152
+ }
153
+ triggerCompleteEvent(eventName:"onComplete",dataModel:dataModel.otherExtractedModel)
154
+ DispatchQueue.main.async {
155
+ self.dismiss(animated: false)
156
+ }
157
+
158
+ }
159
+
160
+
161
+ }
162
+
163
+ func onCardDetected(dataModel: RemoteProcessingModel) {
164
+ triggerEvent(eventName:"onCardDetected",dataModel:dataModel)
165
+ }
166
+
167
+ func onMrzExtracted(dataModel: RemoteProcessingModel) {
168
+ triggerEvent(eventName:"onMrzExtracted",dataModel:dataModel)
169
+ }
170
+
171
+ func onMrzDetected(dataModel: RemoteProcessingModel) {
172
+ triggerEvent(eventName:"onMrzDetected",dataModel:dataModel)
173
+ }
174
+
175
+ func onNoMrzDetected(dataModel: RemoteProcessingModel) {
176
+ triggerEvent(eventName:"onNoMrzDetected",dataModel:dataModel)
177
+ }
178
+
179
+
180
+ func onFaceDetected(dataModel: RemoteProcessingModel) {
181
+ triggerEvent(eventName:"onFaceDetected",dataModel:dataModel)
182
+ }
183
+
184
+ func onNoFaceDetected(dataModel: RemoteProcessingModel) {
185
+ triggerEvent(eventName:"onNoFaceDetected",dataModel:dataModel)
186
+ }
187
+
188
+ func onFaceExtracted(dataModel: RemoteProcessingModel) {
189
+ triggerEvent(eventName:"onFaceExtracted",dataModel:dataModel)
190
+ }
191
+
192
+ func onQualityCheckAvailable(dataModel: RemoteProcessingModel) {
193
+ triggerEvent(eventName:"onQualityCheckAvailable",dataModel:dataModel)
194
+ }
195
+
196
+ func onDocumentCaptured(dataModel: RemoteProcessingModel) {
197
+ triggerEvent(eventName:"onDocumentCaptured",dataModel:dataModel)
198
+ }
199
+
200
+ func onDocumentCropped(dataModel: RemoteProcessingModel) {
201
+ triggerEvent(eventName:"onDocumentCropped",dataModel:dataModel)
202
+ }
203
+
204
+ func onUploadFailed(dataModel: RemoteProcessingModel) {
205
+ triggerEvent(eventName:"onUploadFailed",dataModel:dataModel)
206
+ }
207
+
208
+ func onEnvironmentalConditionsChange(brightness: Double, motion: MotionType, zoom: ZoomType) {
209
+ DispatchQueue.main.async {
210
+ if(self.start == false){
211
+ if (zoom != ZoomType.SENDING && zoom != ZoomType.NO_DETECT) {
212
+ if (zoom == ZoomType.ZOOM_IN) {
213
+ self.start = false;
214
+ self.infoLabel?.text = "Move ID Closer"
215
+ self.infoImage!.image = UIImage(named: "zoom_in")
216
+ }
217
+ if (zoom == ZoomType.ZOOM_OUT) {
218
+ self.start = false;
219
+ self.infoLabel?.text = "Move ID Further"
220
+ self.infoImage!.image = UIImage(named: "zoom_out")
221
+ }
222
+ } else if (motion == MotionType.HOLD_YOUR_HAND) {
223
+ self.start = false;
224
+ self.infoLabel?.text = "Please Hold Your Hand"
225
+ self.infoImage!.image = UIImage(named: "info_icon")
226
+ } else {
227
+ if (motion == MotionType.SENDING && zoom == ZoomType.SENDING){
228
+ self.start = false;
229
+ self.infoLabel?.text = "Hold Steady"
230
+ self.infoImage!.image = UIImage(named: "info_icon")
231
+ }
232
+ if (motion == MotionType.NO_DETECT && zoom == ZoomType.NO_DETECT){
233
+ self.start = false;
234
+ self.infoLabel?.text = "Please Present Your ID"
235
+ self.infoImage!.image = UIImage(named: "info_icon")
236
+ }
237
+
238
+ }
239
+ }else {
240
+ self.infoLabel?.removeFromSuperview()
241
+ self.infoImage?.removeFromSuperview()
242
+ }
243
+
244
+ }
245
+
246
+ }
247
+
248
+
249
+
250
+
251
+ func triggerCompleteEvent(eventName:String, dataModel: OtherExtractedModel?){
252
+ var eventResultMap: [String: Any] = [:]
253
+ if(dataModel != nil){
254
+ eventResultMap = [
255
+ "OtherDataModel": otherModelToJsonString(dataModel: dataModel) as Any
256
+ ]
257
+ }
258
+ DispatchQueue.main.async {
259
+ self.nativeAssentifySdk?.sendEvent(withName: eventName, body: eventResultMap)
260
+ }
261
+
262
+ }
263
+
264
+ func triggerEvent(eventName:String, dataModel: RemoteProcessingModel?){
265
+ var eventResultMap: [String: Any] = [:]
266
+ if(dataModel != nil){
267
+ eventResultMap = [
268
+ "OtherDataModel": dataModel?.response as Any
269
+ ]
270
+ }
271
+ DispatchQueue.main.async {
272
+ self.nativeAssentifySdk?.sendEvent(withName: eventName, body: eventResultMap)
273
+ }
274
+
275
+ }
276
+
277
+
278
+
279
+
280
+ }
281
+
282
+
283
+
@@ -0,0 +1,302 @@
1
+
2
+
3
+ import UIKit
4
+ import AVFoundation
5
+ import AssentifySdk
6
+
7
+ class PassportController: UIViewController ,ScanPassportDelegate , ChildViewControllerDelegate
8
+ {
9
+
10
+
11
+
12
+ private var isDone:Bool = false;
13
+ private var nativeAssentifySdk:NativeAssentifySdk?;
14
+ private var assentifySdk:AssentifySdk?;
15
+ private var start:Bool = false;
16
+ var infoLabel : UILabel?;
17
+ var infoImage : UIImageView?;
18
+ var popUpMessage : UIView?;
19
+ private var holdHandColor: String;
20
+ private var processingColor: String;
21
+ private var language: String;
22
+ private var showCountDown: Bool = true;
23
+ private var apiKey: String? = "";
24
+
25
+
26
+
27
+
28
+
29
+ init(assentifySdk: AssentifySdk,nativeAssentifySdk:NativeAssentifySdk?,holdHandColor: String,processingColor: String,language:String,showCountDown:Bool,apiKey:String) {
30
+ self.assentifySdk = assentifySdk
31
+ self.nativeAssentifySdk = nativeAssentifySdk
32
+ self.holdHandColor = holdHandColor
33
+ self.processingColor = processingColor
34
+ self.language = language
35
+ self.showCountDown = showCountDown
36
+ self.apiKey = apiKey
37
+ super.init(nibName: nil, bundle: nil)
38
+ }
39
+
40
+ required init?(coder: NSCoder) {
41
+ fatalError("init(coder:) has not been implemented")
42
+ }
43
+
44
+ override var prefersStatusBarHidden: Bool {
45
+ return false
46
+ }
47
+
48
+
49
+ override func viewDidLoad() {
50
+ super.viewDidLoad()
51
+ self.view.backgroundColor = .clear
52
+ UIApplication.shared.isStatusBarHidden = false;
53
+ DispatchQueue.main.async {
54
+ var scanPassport = self.assentifySdk?.startScanPassport(scanPassportDelegate: self,language: self.language)
55
+ self.addChild(scanPassport!)
56
+ self.view.addSubview(scanPassport!.view)
57
+ scanPassport!.view.translatesAutoresizingMaskIntoConstraints = false
58
+ NSLayoutConstraint.activate([
59
+ scanPassport!.view.topAnchor.constraint(equalTo: self.view.topAnchor,constant: 0),
60
+ scanPassport!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
61
+ scanPassport!.view.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
62
+ scanPassport!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
63
+ ])
64
+ scanPassport!.didMove(toParent: self)
65
+ (self.infoLabel, self.infoImage) = showInfo(view: self.view, text: "Please Present Your Passport",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor,initialImageName:"info_icon")
66
+ showNavigationBarWithBackArrow(view: self.view, target: self, action: #selector(self.backButtonTapped), initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor,title: "Passport Capture")
67
+
68
+ }
69
+ }
70
+ @objc func backButtonTapped() {
71
+ triggerEvent(eventName:"onBackClick",dataModel:nil)
72
+ DispatchQueue.main.async {
73
+ self.dismiss(animated: false)
74
+ }
75
+ }
76
+
77
+ func dismissParentViewController() {
78
+ triggerEvent(eventName:"onBackClick",dataModel:nil)
79
+ DispatchQueue.main.async {
80
+ self.dismiss(animated: false)
81
+ }
82
+
83
+ }
84
+
85
+ @objc func dismissPopUpMessage() {
86
+ DispatchQueue.main.async {
87
+ if(!self.start){
88
+ self.popUpMessage!.removeFromSuperview();
89
+ (self.infoLabel, self.infoImage) = showInfo(view: self.view, text: "Please Present Your Passport",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor,initialImageName:"info_icon")
90
+ }
91
+ }
92
+
93
+ }
94
+ func onSend() {
95
+ triggerEvent(eventName:"onSend",dataModel:nil)
96
+ DispatchQueue.main.async {
97
+ if(self.popUpMessage != nil){
98
+ self.popUpMessage!.removeFromSuperview();
99
+ }
100
+ self.start = true;
101
+ self.popUpMessage = showPopUpMessage(view: self.view, title: "Transmitting", subTitle: "",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor, iconName: "passport", isGif: true,target: self, action: #selector(self.dismissPopUpMessage))
102
+ }
103
+ }
104
+
105
+ func onError(dataModel: RemoteProcessingModel) {
106
+ triggerEvent(eventName:"onError",dataModel:dataModel)
107
+ DispatchQueue.main.async {
108
+ self.start = false;
109
+ self.popUpMessage!.removeFromSuperview();
110
+ self.popUpMessage = showPopUpMessage(view: self.view, title: "Unable to extract", subTitle: "Let's try again",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor, iconName: "warning", isGif: false,target: self, action: #selector(self.dismissPopUpMessage))
111
+ }
112
+ }
113
+
114
+
115
+ func onRetry(dataModel: RemoteProcessingModel) {
116
+ triggerEvent(eventName:"onRetry",dataModel:dataModel)
117
+ DispatchQueue.main.async {
118
+ self.start = false;
119
+ self.popUpMessage!.removeFromSuperview();
120
+ self.popUpMessage = showPopUpMessage(view: self.view, title: "Unable to extract", subTitle: "Let's try again",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor, iconName: "warning", isGif: false,target: self, action: #selector(self.dismissPopUpMessage))
121
+ }
122
+ }
123
+
124
+ func onLivenessUpdate(dataModel: RemoteProcessingModel) {
125
+ triggerEvent(eventName:"onLivenessUpdate",dataModel:dataModel)
126
+ DispatchQueue.main.async {
127
+ self.start = false;
128
+ self.popUpMessage!.removeFromSuperview();
129
+ self.popUpMessage = showPopUpMessage(view: self.view, title: "Failed ID Check", subTitle: "Please real ID (Not copy)",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor, iconName: "warning", isGif: false,target: self, action: #selector(self.dismissPopUpMessage))
130
+ }
131
+ }
132
+
133
+ func onClipPreparationComplete(dataModel: RemoteProcessingModel) {
134
+ triggerEvent(eventName:"onClipPreparationComplete",dataModel:dataModel)
135
+ }
136
+
137
+ func onStatusUpdated(dataModel: RemoteProcessingModel) {
138
+ triggerEvent(eventName:"onStatusUpdated",dataModel:dataModel)
139
+ }
140
+
141
+ func onUpdated(dataModel: RemoteProcessingModel) {
142
+ triggerEvent(eventName:"onUpdated",dataModel:dataModel)
143
+ }
144
+
145
+
146
+
147
+ func onComplete(dataModel: PassportResponseModel) {
148
+ print("Passport onComplete: \(dataModel)")
149
+
150
+
151
+ if let isExpired = dataModel.passportExtractedModel?.identificationDocumentCapture?.IsExpired, isExpired as! Bool {
152
+ if(isExpired as! Bool == true){
153
+ DispatchQueue.main.async {
154
+ self.start = false;
155
+ self.popUpMessage!.removeFromSuperview();
156
+ self.popUpMessage = showPopUpMessage(view: self.view, title: "Expired", subTitle: "Please provide valid ID",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor, iconName: "expire", isGif: false,target: self, action: #selector(self.dismissPopUpMessage))
157
+ }
158
+ }else{
159
+ if(!isDone){
160
+ isDone = true;
161
+ if let outputProperties = try? JSONSerialization.data(withJSONObject: dataModel.passportExtractedModel?.transformedProperties, options: []) {
162
+ UserDefaults.standard.set(outputProperties, forKey: "OutputPropertiesDoc")
163
+ }
164
+ triggerCompleteEvent(eventName:"onComplete",dataModel:dataModel.passportExtractedModel)
165
+ DispatchQueue.main.async {
166
+ self.dismiss(animated: false)
167
+ }
168
+ }
169
+ }
170
+ } else {
171
+ if(!isDone){
172
+ isDone = true;
173
+ if let outputProperties = try? JSONSerialization.data(withJSONObject: dataModel.passportExtractedModel?.transformedProperties, options: []) {
174
+ UserDefaults.standard.set(outputProperties, forKey: "OutputPropertiesDoc")
175
+ }
176
+ triggerCompleteEvent(eventName:"onComplete",dataModel:dataModel.passportExtractedModel)
177
+ DispatchQueue.main.async {
178
+ self.dismiss(animated: false)
179
+ }
180
+ }
181
+ }
182
+
183
+
184
+
185
+
186
+ }
187
+
188
+ func onCardDetected(dataModel: RemoteProcessingModel) {
189
+ triggerEvent(eventName:"onCardDetected",dataModel:dataModel)
190
+ }
191
+
192
+ func onMrzExtracted(dataModel: RemoteProcessingModel) {
193
+ triggerEvent(eventName:"onMrzExtracted",dataModel:dataModel)
194
+ }
195
+
196
+ func onMrzDetected(dataModel: RemoteProcessingModel) {
197
+ triggerEvent(eventName:"onMrzDetected",dataModel:dataModel)
198
+ }
199
+
200
+ func onNoMrzDetected(dataModel: RemoteProcessingModel) {
201
+ triggerEvent(eventName:"onNoMrzDetected",dataModel:dataModel)
202
+ }
203
+
204
+
205
+ func onFaceDetected(dataModel: RemoteProcessingModel) {
206
+ triggerEvent(eventName:"onFaceDetected",dataModel:dataModel)
207
+ }
208
+
209
+ func onNoFaceDetected(dataModel: RemoteProcessingModel) {
210
+ triggerEvent(eventName:"onNoFaceDetected",dataModel:dataModel)
211
+ }
212
+
213
+ func onFaceExtracted(dataModel: RemoteProcessingModel) {
214
+ triggerEvent(eventName:"onFaceExtracted",dataModel:dataModel)
215
+ }
216
+
217
+ func onQualityCheckAvailable(dataModel: RemoteProcessingModel) {
218
+ triggerEvent(eventName:"onQualityCheckAvailable",dataModel:dataModel)
219
+ }
220
+
221
+ func onDocumentCaptured(dataModel: RemoteProcessingModel) {
222
+ triggerEvent(eventName:"onDocumentCaptured",dataModel:dataModel)
223
+ }
224
+
225
+ func onDocumentCropped(dataModel: RemoteProcessingModel) {
226
+ triggerEvent(eventName:"onDocumentCropped",dataModel:dataModel)
227
+ }
228
+
229
+ func onUploadFailed(dataModel: RemoteProcessingModel) {
230
+ triggerEvent(eventName:"onUploadFailed",dataModel:dataModel)
231
+ }
232
+
233
+ func onEnvironmentalConditionsChange(brightness: Double, motion: MotionType, zoom: ZoomType) {
234
+ DispatchQueue.main.async {
235
+ if(self.start == false){
236
+ if (zoom != ZoomType.SENDING && zoom != ZoomType.NO_DETECT) {
237
+ if (zoom == ZoomType.ZOOM_IN) {
238
+ self.start = false;
239
+ self.infoLabel?.text = "Move Passport Closer"
240
+ self.infoImage!.image = UIImage(named: "zoom_in")
241
+ }
242
+ if (zoom == ZoomType.ZOOM_OUT) {
243
+ self.start = false;
244
+ self.infoLabel?.text = "Move Passport Further"
245
+ self.infoImage!.image = UIImage(named: "zoom_out")
246
+ }
247
+ } else if (motion == MotionType.HOLD_YOUR_HAND) {
248
+ self.start = false;
249
+ self.infoLabel?.text = "Please Hold Your Hand"
250
+ self.infoImage!.image = UIImage(named: "info_icon")
251
+ } else {
252
+ if (motion == MotionType.SENDING && zoom == ZoomType.SENDING){
253
+ self.start = false;
254
+ self.infoLabel?.text = "Hold Steady"
255
+ self.infoImage!.image = UIImage(named: "info_icon")
256
+ }
257
+ if (motion == MotionType.NO_DETECT && zoom == ZoomType.NO_DETECT){
258
+ self.start = false;
259
+ self.infoLabel?.text = "Please Present Your Passport"
260
+ self.infoImage!.image = UIImage(named: "info_icon")
261
+ }
262
+
263
+ }
264
+ }else {
265
+ self.infoLabel?.removeFromSuperview()
266
+ self.infoImage?.removeFromSuperview()
267
+ }
268
+
269
+ }
270
+
271
+ }
272
+
273
+ func triggerCompleteEvent(eventName:String, dataModel: PassportExtractedModel?){
274
+ var eventResultMap: [String: Any] = [:]
275
+ if(dataModel != nil){
276
+ eventResultMap = ["PassportDataModel": passportModelToJsonString(dataModel: dataModel) as Any]
277
+ }
278
+ DispatchQueue.main.async {
279
+ self.nativeAssentifySdk?.sendEvent(withName: eventName, body: eventResultMap)
280
+ }
281
+
282
+ }
283
+
284
+ func triggerEvent(eventName:String, dataModel: RemoteProcessingModel?){
285
+ var eventResultMap: [String: Any] = [:]
286
+ if(dataModel != nil){
287
+ eventResultMap = ["PassportDataModel": dataModel as Any]
288
+ }
289
+ DispatchQueue.main.async {
290
+ self.nativeAssentifySdk?.sendEvent(withName: eventName, body: eventResultMap)
291
+ }
292
+
293
+ }
294
+
295
+
296
+
297
+
298
+
299
+ }
300
+
301
+
302
+