@regulaforensics/react-native-document-reader-api 7.4.706-rc → 7.5.23-rc
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/README.md +1 -1
- package/RNDocumentReaderApi.podspec +2 -2
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/regula/documentreader/BluetoothUtil.kt +95 -45
- package/android/src/main/java/com/regula/documentreader/Config.kt +43 -2
- package/android/src/main/java/com/regula/documentreader/JSONConstructor.kt +27 -13
- package/android/src/main/java/com/regula/documentreader/RNRegulaDocumentReaderModule.kt +29 -23
- package/android/src/main/java/com/regula/documentreader/Utils.kt +7 -2
- package/example/App.tsx +5 -0
- package/example/android/app/src/main/AndroidManifest.xml +1 -0
- package/example/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/example/ios/DocumentReader/Info.plist +0 -2
- package/example/package-lock.json +5424 -6007
- package/example/package.json +2 -2
- package/index.d.ts +120 -7
- package/index.js +82 -5
- package/ios/RGLWConfig.m +45 -7
- package/ios/RGLWJSONConstructor.h +3 -0
- package/ios/RGLWJSONConstructor.m +33 -2
- package/ios/RNRegulaDocumentReader.h +4 -1
- package/ios/RNRegulaDocumentReader.m +71 -24
- package/package.json +2 -6
- package/.github/ISSUE_TEMPLATE/config.yml +0 -5
package/ios/RGLWConfig.m
CHANGED
|
@@ -68,10 +68,6 @@
|
|
|
68
68
|
if([options valueForKey:@"zoomFactor"] != nil)
|
|
69
69
|
functionality.zoomFactor = [[options valueForKey:@"zoomFactor"] floatValue];
|
|
70
70
|
|
|
71
|
-
// JSONObject
|
|
72
|
-
if([options valueForKey:@"onlineProcessingConfiguration"] != nil)
|
|
73
|
-
functionality.onlineProcessingConfig = [RGLWJSONConstructor onlineProcessingConfigFromJson:[options valueForKey:@"onlineProcessingConfiguration"]];
|
|
74
|
-
|
|
75
71
|
// Custom
|
|
76
72
|
// in android - cameraSize
|
|
77
73
|
if([options valueForKey:@"videoSessionPreset"] != nil)
|
|
@@ -116,9 +112,6 @@
|
|
|
116
112
|
// Float
|
|
117
113
|
result[@"zoomFactor"] = [NSNumber numberWithFloat:functionality.zoomFactor];
|
|
118
114
|
|
|
119
|
-
// JSONObject
|
|
120
|
-
result[@"onlineProcessingConfiguration"] = [RGLWJSONConstructor generateOnlineProcessingConfig:functionality.onlineProcessingConfig];
|
|
121
|
-
|
|
122
115
|
// Custom
|
|
123
116
|
// in android - cameraSize
|
|
124
117
|
result[@"videoSessionPreset"] = [self generateCaptureSessionPreset:functionality.videoSessionPreset];
|
|
@@ -180,6 +173,7 @@
|
|
|
180
173
|
processParams.disablePerforationOCR = [options valueForKey:@"disablePerforationOCR"];
|
|
181
174
|
if([options valueForKey:@"respectImageQuality"] != nil)
|
|
182
175
|
processParams.respectImageQuality = [options valueForKey:@"respectImageQuality"];
|
|
176
|
+
if (options[@"strictImageQuality"]) processParams.strictImageQuality = options[@"strictImageQuality"];
|
|
183
177
|
if([options valueForKey:@"splitNames"] != nil)
|
|
184
178
|
processParams.splitNames = [options valueForKey:@"splitNames"];
|
|
185
179
|
if([options valueForKey:@"doDetectCan"] != nil)
|
|
@@ -191,6 +185,9 @@
|
|
|
191
185
|
if([options valueForKey:@"checkHologram"] != nil)
|
|
192
186
|
processParams.checkHologram = [options valueForKey:@"checkHologram"];
|
|
193
187
|
if (options[@"generateNumericCodes"]) processParams.generateNumericCodes = options[@"generateNumericCodes"];
|
|
188
|
+
if (options[@"strictBarcodeDigitalSignatureCheck"]) processParams.strictBarcodeDigitalSignatureCheck = options[@"strictBarcodeDigitalSignatureCheck"];
|
|
189
|
+
if (options[@"selectLongestNames"]) processParams.selectLongestNames = options[@"selectLongestNames"];
|
|
190
|
+
if (options[@"generateDTCVC"]) processParams.generateDTCVC = options[@"generateDTCVC"];
|
|
194
191
|
|
|
195
192
|
// Int
|
|
196
193
|
if([options valueForKey:@"measureSystem"] != nil)
|
|
@@ -308,12 +305,16 @@
|
|
|
308
305
|
result[@"shouldReturnPackageForReprocess"] = processParams.shouldReturnPackageForReprocess;
|
|
309
306
|
result[@"disablePerforationOCR"] = processParams.disablePerforationOCR;
|
|
310
307
|
result[@"respectImageQuality"] = processParams.respectImageQuality;
|
|
308
|
+
result[@"strictImageQuality"] = processParams.strictImageQuality;
|
|
311
309
|
result[@"splitNames"] = processParams.splitNames;
|
|
312
310
|
result[@"doDetectCan"] = processParams.doDetectCan;
|
|
313
311
|
result[@"useFaceApi"] = processParams.useFaceApi;
|
|
314
312
|
result[@"useAuthenticityCheck"] = processParams.useAuthenticityCheck;
|
|
315
313
|
result[@"checkHologram"] = processParams.checkHologram;
|
|
316
314
|
result[@"generateNumericCodes"] = processParams.generateNumericCodes;
|
|
315
|
+
result[@"strictBarcodeDigitalSignatureCheck"] = processParams.strictBarcodeDigitalSignatureCheck;
|
|
316
|
+
result[@"selectLongestNames"] = processParams.selectLongestNames;
|
|
317
|
+
result[@"generateDTCVC"] = processParams.generateDTCVC;
|
|
317
318
|
|
|
318
319
|
// Int
|
|
319
320
|
result[@"measureSystem"] = [NSNumber numberWithInteger:processParams.measureSystem];
|
|
@@ -390,6 +391,8 @@
|
|
|
390
391
|
customization.cameraFrameShapeType = [[options valueForKey:@"cameraFrameShapeType"] integerValue];
|
|
391
392
|
if([options valueForKey:@"cameraFrameOffsetWidth"] != nil)
|
|
392
393
|
customization.cameraFrameOffsetWidth = [[options valueForKey:@"cameraFrameOffsetWidth"] floatValue];
|
|
394
|
+
if(options[@"nextPageAnimationStartDelay"]) customization.nextPageAnimationStartDelay = [options[@"nextPageAnimationStartDelay"] floatValue];
|
|
395
|
+
if(options[@"nextPageAnimationEndDelay"]) customization.nextPageAnimationEndDelay = [options[@"nextPageAnimationEndDelay"] floatValue];
|
|
393
396
|
|
|
394
397
|
// String
|
|
395
398
|
if([options valueForKey:@"status"] != nil)
|
|
@@ -418,6 +421,8 @@
|
|
|
418
421
|
customization.statusBackgroundColor = [self colorWithInt:[options valueForKey:@"statusBackgroundColor"]];
|
|
419
422
|
if([options valueForKey:@"cameraPreviewBackgroundColor"] != nil)
|
|
420
423
|
customization.cameraPreviewBackgroundColor = [self colorWithInt:[options valueForKey:@"cameraPreviewBackgroundColor"]];
|
|
424
|
+
if([options valueForKey:@"backgroundMaskColor"] != nil)
|
|
425
|
+
customization.backgroundMaskColor = [self colorWithInt:[options valueForKey:@"backgroundMaskColor"]];
|
|
421
426
|
|
|
422
427
|
// Float
|
|
423
428
|
if([options valueForKey:@"statusPositionMultiplier"] != nil)
|
|
@@ -516,6 +521,8 @@
|
|
|
516
521
|
result[@"cameraFrameLineLength"] = [NSNumber numberWithFloat:customization.cameraFrameLineLength];
|
|
517
522
|
result[@"cameraFrameShapeType"] = [NSNumber numberWithFloat:customization.cameraFrameShapeType];
|
|
518
523
|
result[@"cameraFrameOffsetWidth"] = [NSNumber numberWithFloat:customization.cameraFrameOffsetWidth];
|
|
524
|
+
result[@"nextPageAnimationStartDelay"] = [NSNumber numberWithFloat:customization.nextPageAnimationStartDelay];
|
|
525
|
+
result[@"nextPageAnimationEndDelay"] = [NSNumber numberWithFloat:customization.nextPageAnimationEndDelay];
|
|
519
526
|
|
|
520
527
|
// String
|
|
521
528
|
result[@"status"] = customization.status;
|
|
@@ -532,6 +539,7 @@
|
|
|
532
539
|
result[@"activityIndicatorColor"] = [self intWithColor:customization.activityIndicatorColor];
|
|
533
540
|
result[@"statusBackgroundColor"] = [self intWithColor:customization.statusBackgroundColor];
|
|
534
541
|
result[@"cameraPreviewBackgroundColor"] = [self intWithColor:customization.cameraPreviewBackgroundColor];
|
|
542
|
+
result[@"backgroundMaskColor"] = [self intWithColor:customization.backgroundMaskColor];
|
|
535
543
|
|
|
536
544
|
// Float
|
|
537
545
|
result[@"statusPositionMultiplier"] = [NSNumber numberWithFloat:customization.statusPositionMultiplier];
|
|
@@ -652,6 +660,8 @@
|
|
|
652
660
|
rfidScenario.autoSettings = [[options valueForKey:@"autoSettings"] boolValue];
|
|
653
661
|
if([options valueForKey:@"proceedReadingAlways"] != nil)
|
|
654
662
|
rfidScenario.proceedReadingAlways = [[options valueForKey:@"proceedReadingAlways"] boolValue];
|
|
663
|
+
if(options[@"readDTC"]) rfidScenario.readDTC = [options[@"readDTC"] boolValue];
|
|
664
|
+
if(options[@"mrzStrictCheck"]) rfidScenario.mrzStrictCheck = options[@"mrzStrictCheck"];
|
|
655
665
|
|
|
656
666
|
// Int
|
|
657
667
|
if([options valueForKey:@"signManagementAction"] != nil)
|
|
@@ -686,6 +696,7 @@
|
|
|
686
696
|
rfidScenario.eSignPINDefault = [options valueForKey:@"eSignPINDefault"];
|
|
687
697
|
if([options valueForKey:@"eSignPINNewValue"] != nil)
|
|
688
698
|
rfidScenario.eSignPINNewValue = [options valueForKey:@"eSignPINNewValue"];
|
|
699
|
+
if(options[@"cardAccess"]) rfidScenario.cardAccess = options[@"cardAccess"];
|
|
689
700
|
|
|
690
701
|
// DataGroup
|
|
691
702
|
if([options valueForKey:@"ePassportDataGroups"] != nil)
|
|
@@ -694,6 +705,7 @@
|
|
|
694
705
|
[self setDataGroups :rfidScenario.eIDDataGroups dict:[options valueForKey:@"eIDDataGroups"]];
|
|
695
706
|
if([options valueForKey:@"eDLDataGroups"] != nil)
|
|
696
707
|
[self setDataGroups :rfidScenario.eDLDataGroups dict:[options valueForKey:@"eDLDataGroups"]];
|
|
708
|
+
if(options[@"dtcDataGroups"]) [self setDataGroups :rfidScenario.DTCDataGroups dict:options[@"dtcDataGroups"]];
|
|
697
709
|
}
|
|
698
710
|
|
|
699
711
|
+(NSDictionary*)getRfidScenario:(RGLRFIDScenario*)rfidScenario {
|
|
@@ -734,6 +746,8 @@
|
|
|
734
746
|
result[@"applyAmendments"] = [NSNumber numberWithBool:rfidScenario.applyAmendments];
|
|
735
747
|
result[@"autoSettings"] = [NSNumber numberWithBool:rfidScenario.autoSettings];
|
|
736
748
|
result[@"proceedReadingAlways"] = [NSNumber numberWithBool:rfidScenario.proceedReadingAlways];
|
|
749
|
+
result[@"readDTC"] = [NSNumber numberWithBool:rfidScenario.readDTC];
|
|
750
|
+
result[@"mrzStrictCheck"] = rfidScenario.mrzStrictCheck;
|
|
737
751
|
|
|
738
752
|
// Int
|
|
739
753
|
result[@"signManagementAction"] = [NSNumber numberWithInteger:rfidScenario.signManagementAction];
|
|
@@ -753,11 +767,13 @@
|
|
|
753
767
|
result[@"mrz"] = rfidScenario.mrz;
|
|
754
768
|
result[@"eSignPINDefault"] = rfidScenario.eSignPINDefault;
|
|
755
769
|
result[@"eSignPINNewValue"] = rfidScenario.eSignPINNewValue;
|
|
770
|
+
result[@"cardAccess"] = rfidScenario.cardAccess;
|
|
756
771
|
|
|
757
772
|
// DataGroup
|
|
758
773
|
result[@"eDLDataGroups"] = [self getDataGroups:rfidScenario.eDLDataGroups];
|
|
759
774
|
result[@"ePassportDataGroups"] = [self getDataGroups:rfidScenario.ePassportDataGroups];
|
|
760
775
|
result[@"eIDDataGroups"] = [self getDataGroups:rfidScenario.eIDDataGroups];
|
|
776
|
+
result[@"dtcDataGroups"] = [self getDataGroups:rfidScenario.DTCDataGroups];
|
|
761
777
|
|
|
762
778
|
return result;
|
|
763
779
|
}
|
|
@@ -819,6 +835,17 @@
|
|
|
819
835
|
if([dict valueForKey:@"DG21"] != nil)
|
|
820
836
|
((RGLeIDDataGroup*)dataGroup).dG21 = [[dict valueForKey:@"DG21"] boolValue];
|
|
821
837
|
}
|
|
838
|
+
|
|
839
|
+
// DTCDataGroups: 1-18 & 22-24
|
|
840
|
+
if ([dataGroup class] == [RGLDTCDataGroup class]) {
|
|
841
|
+
if(dict[@"DG15"]) ((RGLDTCDataGroup*)dataGroup).dG15 = [dict[@"DG15"] boolValue];
|
|
842
|
+
if(dict[@"DG16"]) ((RGLDTCDataGroup*)dataGroup).dG16 = [dict[@"DG16"] boolValue];
|
|
843
|
+
if(dict[@"DG17"]) ((RGLDTCDataGroup*)dataGroup).dG17 = [dict[@"DG17"] boolValue];
|
|
844
|
+
if(dict[@"DG18"]) ((RGLDTCDataGroup*)dataGroup).dG18 = [dict[@"DG18"] boolValue];
|
|
845
|
+
if(dict[@"DG22"]) ((RGLDTCDataGroup*)dataGroup).dG22 = [dict[@"DG22"] boolValue];
|
|
846
|
+
if(dict[@"DG23"]) ((RGLDTCDataGroup*)dataGroup).dG23 = [dict[@"DG23"] boolValue];
|
|
847
|
+
if(dict[@"DG24"]) ((RGLDTCDataGroup*)dataGroup).dG24 = [dict[@"DG24"] boolValue];
|
|
848
|
+
}
|
|
822
849
|
}
|
|
823
850
|
|
|
824
851
|
+(NSDictionary *)getDataGroups:(RGLDataGroup*)dataGroup {
|
|
@@ -857,6 +884,17 @@
|
|
|
857
884
|
result[@"DG21"] = [NSNumber numberWithBool:((RGLeIDDataGroup*)dataGroup).dG21];
|
|
858
885
|
}
|
|
859
886
|
|
|
887
|
+
// DTCDataGroups: 1-18 & 22-24
|
|
888
|
+
if ([dataGroup class] == [RGLDTCDataGroup class]) {
|
|
889
|
+
result[@"DG15"] = [NSNumber numberWithBool:((RGLDTCDataGroup*)dataGroup).dG15];
|
|
890
|
+
result[@"DG16"] = [NSNumber numberWithBool:((RGLDTCDataGroup*)dataGroup).dG16];
|
|
891
|
+
result[@"DG17"] = [NSNumber numberWithBool:((RGLDTCDataGroup*)dataGroup).dG17];
|
|
892
|
+
result[@"DG18"] = [NSNumber numberWithBool:((RGLDTCDataGroup*)dataGroup).dG18];
|
|
893
|
+
result[@"DG22"] = [NSNumber numberWithBool:((RGLDTCDataGroup*)dataGroup).dG22];
|
|
894
|
+
result[@"DG23"] = [NSNumber numberWithBool:((RGLDTCDataGroup*)dataGroup).dG23];
|
|
895
|
+
result[@"DG24"] = [NSNumber numberWithBool:((RGLDTCDataGroup*)dataGroup).dG24];
|
|
896
|
+
}
|
|
897
|
+
|
|
860
898
|
return result;
|
|
861
899
|
}
|
|
862
900
|
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
+(RGLConfig* _Nullable)configFromJson:(NSDictionary* _Nullable)input;
|
|
32
32
|
+(NSDictionary* _Nullable)generateConfig:(RGLConfig* _Nullable)input;
|
|
33
|
+
+(RGLBleConfig* _Nullable)bleDeviceConfigFromJson:(NSDictionary* _Nullable)input :(RGLBluetooth* _Nonnull)bluetooth;
|
|
33
34
|
+(RGLOnlineProcessingConfig* _Nullable)onlineProcessingConfigFromJson:(NSDictionary* _Nullable)input;
|
|
34
35
|
+(NSDictionary* _Nullable)generateOnlineProcessingConfig:(RGLOnlineProcessingConfig* _Nullable)input;
|
|
35
36
|
+(RGLImageInput* _Nullable)imageInputFromJson:(NSDictionary* _Nullable)input;
|
|
@@ -62,6 +63,8 @@
|
|
|
62
63
|
+(NSDictionary* _Nullable)generateEPassportDataGroups:(RGLePassportDataGroup* _Nullable)input;
|
|
63
64
|
+(RGLeIDDataGroup* _Nullable)eIDDataGroupsFromJson:(NSDictionary* _Nullable)input;
|
|
64
65
|
+(NSDictionary* _Nullable)generateEIDDataGroups:(RGLeIDDataGroup* _Nullable)input;
|
|
66
|
+
+(RGLeIDDataGroup* _Nullable)dtcDataGroupsFromJson:(NSDictionary* _Nullable)input;
|
|
67
|
+
+(NSDictionary* _Nullable)generateRGLDTCDataGroups:(RGLeIDDataGroup* _Nullable)input;
|
|
65
68
|
+(RGLRFIDScenario* _Nullable)rfidScenarioFromJson:(NSDictionary* _Nullable)input;
|
|
66
69
|
+(NSDictionary* _Nullable)generateRFIDScenario:(RGLRFIDScenario* _Nullable)input;
|
|
67
70
|
+(RGLCustomization* _Nullable)customizationFromJson:(NSDictionary* _Nullable)input;
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
+(NSData*)base64Decode:(NSString*)input {
|
|
25
25
|
if(input == nil) return nil;
|
|
26
|
+
if ([input hasPrefix:@"data"]) input = [input substringFromIndex:[input rangeOfString:@","].location + 1];
|
|
26
27
|
return [[NSData alloc] initWithBase64EncodedString:input options:0];
|
|
27
28
|
}
|
|
28
29
|
|
|
@@ -166,6 +167,17 @@
|
|
|
166
167
|
return result;
|
|
167
168
|
}
|
|
168
169
|
|
|
170
|
+
+(RGLBleConfig*)bleDeviceConfigFromJson:(NSDictionary*)input :(RGLBluetooth*)bluetooth {
|
|
171
|
+
if (!input) return nil;
|
|
172
|
+
RGLBleConfig *config = [[RGLBleConfig alloc] initWithBluetooth:bluetooth];
|
|
173
|
+
|
|
174
|
+
if (input[@"databasePath"]) config.databasePath = [[NSBundle mainBundle] pathForResource:input[@"databasePath"] ofType:nil];
|
|
175
|
+
if (input[@"licenseUpdate"]) config.licenseUpdateCheck = [input[@"licenseUpdate"] boolValue];
|
|
176
|
+
if (input[@"delayedNNLoad"]) config.delayedNNLoadEnabled = [input[@"delayedNNLoad"] boolValue];
|
|
177
|
+
|
|
178
|
+
return config;
|
|
179
|
+
}
|
|
180
|
+
|
|
169
181
|
+(RGLScannerConfig*)scannerConfigFromJson:(NSDictionary*)input {
|
|
170
182
|
RGLScannerConfig *config = [RGLScannerConfig alloc];
|
|
171
183
|
if (input[@"scenario"]) config = [config initWithScenario:input[@"scenario"]];
|
|
@@ -216,7 +228,8 @@
|
|
|
216
228
|
if (input[@"scenario"]) config.scenario = input[@"scenario"];
|
|
217
229
|
if (input[@"livePortrait"]) config.livePortrait = [self imageWithBase64:input[@"livePortrait"]];
|
|
218
230
|
if (input[@"extPortrait"]) config.extPortrait = [self imageWithBase64:input[@"extPortrait"]];
|
|
219
|
-
if (input[@"oneShotIdentification"])
|
|
231
|
+
if (input[@"oneShotIdentification"]) config.oneShotIdentification = input[@"oneShotIdentification"];
|
|
232
|
+
if (input[@"dtc"]) config.dtc = [RGLWJSONConstructor base64Decode:input[@"dtc"]];
|
|
220
233
|
|
|
221
234
|
return config;
|
|
222
235
|
}
|
|
@@ -230,6 +243,7 @@
|
|
|
230
243
|
result[@"livePortrait"] = [self base64WithImage: input.livePortrait];
|
|
231
244
|
result[@"extPortrait"] = [self base64WithImage: input.extPortrait];
|
|
232
245
|
result[@"oneShotIdentification"] = @(input.oneShotIdentification);
|
|
246
|
+
result[@"dtc"] = [self base64Encode: input.dtc];
|
|
233
247
|
result[@"image"] = [self base64WithImage: input.image];
|
|
234
248
|
result[@"data"] = [self base64Encode: input.imageData];
|
|
235
249
|
if(input.images != nil) {
|
|
@@ -258,6 +272,7 @@
|
|
|
258
272
|
result.httpHeaders = [input valueForKey:@"httpHeaders"];
|
|
259
273
|
if([input valueForKey:@"rfidServerSideChipVerification"] != nil)
|
|
260
274
|
result.rfidServerSideChipVerification = [input valueForKey:@"rfidServerSideChipVerification"];
|
|
275
|
+
if (input[@"timeoutConnection"]) result.timeoutConnection = input[@"timeoutConnection"];
|
|
261
276
|
|
|
262
277
|
return result;
|
|
263
278
|
}
|
|
@@ -269,6 +284,7 @@
|
|
|
269
284
|
result[@"url"] = input.url;
|
|
270
285
|
result[@"httpHeaders"] = input.httpHeaders;
|
|
271
286
|
result[@"rfidServerSideChipVerification"] = input.rfidServerSideChipVerification;
|
|
287
|
+
result[@"timeoutConnection"] = input.timeoutConnection;
|
|
272
288
|
|
|
273
289
|
return result;
|
|
274
290
|
}
|
|
@@ -333,6 +349,16 @@
|
|
|
333
349
|
return [RGLWConfig getDataGroups:input];
|
|
334
350
|
}
|
|
335
351
|
|
|
352
|
+
+(RGLDTCDataGroup*)dtcDataGroupsFromJson:(NSDictionary*)input {
|
|
353
|
+
RGLDTCDataGroup *result = [RGLDTCDataGroup new];
|
|
354
|
+
[RGLWConfig setDataGroups :result dict:input];
|
|
355
|
+
return result;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
+(NSDictionary*)generateRGLDTCDataGroups:(RGLDTCDataGroup*)input {
|
|
359
|
+
return [RGLWConfig getDataGroups:input];
|
|
360
|
+
}
|
|
361
|
+
|
|
336
362
|
+(RGLRFIDScenario*)rfidScenarioFromJson:(NSDictionary*)input {
|
|
337
363
|
RGLRFIDScenario *result = [RGLRFIDScenario new];
|
|
338
364
|
[RGLWConfig setRfidScenario:input :result];
|
|
@@ -2220,7 +2246,7 @@
|
|
|
2220
2246
|
[imageQuality addObject:[self imageQualityGroupFromJson:item]];
|
|
2221
2247
|
}
|
|
2222
2248
|
|
|
2223
|
-
|
|
2249
|
+
RGLDocumentReaderResults* result = [[RGLDocumentReaderResults alloc]
|
|
2224
2250
|
initWithDocumentTypes:documentType
|
|
2225
2251
|
textResult:[self documentReaderTextResultFromJson: [input valueForKey:@"textResult"]]
|
|
2226
2252
|
graphicResult:[self documentReaderGraphicResultFromJson: [input valueForKey:@"graphicResult"]]
|
|
@@ -2240,6 +2266,10 @@
|
|
|
2240
2266
|
elapsedTime:[[input valueForKey:@"elapsedTime"] integerValue]
|
|
2241
2267
|
elapsedTimeRFID:[[input valueForKey:@"elapsedTimeRFID"] integerValue]
|
|
2242
2268
|
transactionInfo:[self transactionInfoFromJson:[input valueForKey:@"transactionInfo"]]];
|
|
2269
|
+
|
|
2270
|
+
[result setValue:[RGLWJSONConstructor base64Decode:input[@"dtcData"]] forKey:@"dtcData"];
|
|
2271
|
+
|
|
2272
|
+
return result;
|
|
2243
2273
|
}
|
|
2244
2274
|
|
|
2245
2275
|
+(NSDictionary*)generateDocumentReaderResults:(RGLDocumentReaderResults*)input {
|
|
@@ -2289,6 +2319,7 @@
|
|
|
2289
2319
|
result[@"rawResult"] = input.rawResult;
|
|
2290
2320
|
result[@"status"] = [self generateDocumentReaderResultsStatus:input.status];
|
|
2291
2321
|
result[@"vdsncData"] = [self generateVDSNCData:input.vdsncData];
|
|
2322
|
+
result[@"dtcData"] = [self base64Encode: input.dtcData];
|
|
2292
2323
|
result[@"transactionInfo"] = [self generateTransactionInfo:input.transactionInfo];
|
|
2293
2324
|
|
|
2294
2325
|
return result;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#import <React/RCTBridgeModule.h>
|
|
2
2
|
#import <React/RCTEventEmitter.h>
|
|
3
|
+
#import <CoreBluetooth/CoreBluetooth.h>
|
|
3
4
|
#import <DocumentReader/DocumentReader.h>
|
|
4
5
|
#import "RGLWJSONConstructor.h"
|
|
5
6
|
#import "RGLWConfig.h"
|
|
@@ -12,7 +13,9 @@ typedef void (^RGLWRFIDSignatureCallback)(NSData * _Nonnull signature);
|
|
|
12
13
|
RGLRecordScanningProcessDelegate,
|
|
13
14
|
RGLDocReaderRFIDDelegate,
|
|
14
15
|
RGLCustomizationActionDelegate,
|
|
15
|
-
RGLDocReaderDatabaseFetchDelegate
|
|
16
|
+
RGLDocReaderDatabaseFetchDelegate,
|
|
17
|
+
RGLBluetoothDelegate,
|
|
18
|
+
CBCentralManagerDelegate>
|
|
16
19
|
|
|
17
20
|
@property NSNumber* _Nonnull doRequestPACertificates;
|
|
18
21
|
@property NSNumber* _Nonnull doRequestTACertificates;
|
|
@@ -17,9 +17,6 @@ RCT_EXPORT_MODULE();
|
|
|
17
17
|
RGLWPaCertificateCompletionEvent,
|
|
18
18
|
RGLWTaCertificateCompletionEvent,
|
|
19
19
|
RGLWTaSignatureCompletionEvent,
|
|
20
|
-
RGLWBleOnServiceConnectedEvent,
|
|
21
|
-
RGLWBleOnServiceDisconnectedEvent,
|
|
22
|
-
RGLWBleOnDeviceReadyEvent,
|
|
23
20
|
RGLWOnCustomButtonTappedEvent];
|
|
24
21
|
}
|
|
25
22
|
|
|
@@ -49,10 +46,6 @@ RCT_EXPORT_METHOD(exec:(NSString*)moduleName:(NSString*)action:(NSArray*)args:(R
|
|
|
49
46
|
[self getDocumentReaderIsReady :successCallback :errorCallback];
|
|
50
47
|
else if([action isEqualToString:@"getDocumentReaderStatus"])
|
|
51
48
|
[self getDocumentReaderStatus :successCallback :errorCallback];
|
|
52
|
-
else if([action isEqualToString:@"isAuthenticatorAvailableForUse"])
|
|
53
|
-
[self isAuthenticatorAvailableForUse :successCallback :errorCallback];
|
|
54
|
-
else if([action isEqualToString:@"isBlePermissionsGranted"])
|
|
55
|
-
[self isBlePermissionsGranted :successCallback :errorCallback];
|
|
56
49
|
else if([action isEqualToString:@"getRfidSessionStatus"])
|
|
57
50
|
[self getRfidSessionStatus :successCallback :errorCallback];
|
|
58
51
|
else if([action isEqualToString:@"setRfidSessionStatus"])
|
|
@@ -131,8 +124,8 @@ RCT_EXPORT_METHOD(exec:(NSString*)moduleName:(NSString*)action:(NSArray*)args:(R
|
|
|
131
124
|
[self clearPKDCertificates :successCallback :errorCallback];
|
|
132
125
|
else if([action isEqualToString:@"startNewSession"])
|
|
133
126
|
[self startNewSession :successCallback :errorCallback];
|
|
134
|
-
else if([action isEqualToString:@"
|
|
135
|
-
[self
|
|
127
|
+
else if([action isEqualToString:@"connectBluetoothDevice"])
|
|
128
|
+
[self connectBluetoothDevice :[args objectAtIndex:0] :successCallback :errorCallback];
|
|
136
129
|
else if([action isEqualToString:@"setLocalizationDictionary"])
|
|
137
130
|
[self setLocalizationDictionary :[args objectAtIndex:0] :successCallback :errorCallback];
|
|
138
131
|
else if([action isEqualToString:@"getLicense"])
|
|
@@ -141,6 +134,10 @@ RCT_EXPORT_METHOD(exec:(NSString*)moduleName:(NSString*)action:(NSArray*)args:(R
|
|
|
141
134
|
[self getAvailableScenarios :successCallback :errorCallback];
|
|
142
135
|
else if([action isEqualToString:@"getIsRFIDAvailableForUse"])
|
|
143
136
|
[self getIsRFIDAvailableForUse :successCallback :errorCallback];
|
|
137
|
+
else if([action isEqualToString:@"isAuthenticatorRFIDAvailableForUse"])
|
|
138
|
+
[self isAuthenticatorRFIDAvailableForUse :successCallback :errorCallback];
|
|
139
|
+
else if([action isEqualToString:@"isAuthenticatorAvailableForUse"])
|
|
140
|
+
[self isAuthenticatorAvailableForUse :successCallback :errorCallback];
|
|
144
141
|
else if([action isEqualToString:@"getDocReaderVersion"])
|
|
145
142
|
[self getDocReaderVersion :successCallback :errorCallback];
|
|
146
143
|
else if([action isEqualToString:@"getDocReaderDocumentsDatabase"])
|
|
@@ -181,6 +178,8 @@ RCT_EXPORT_METHOD(exec:(NSString*)moduleName:(NSString*)action:(NSArray*)args:(R
|
|
|
181
178
|
[self encryptedContainers :[args objectAtIndex:0] :successCallback :errorCallback];
|
|
182
179
|
else if([action isEqualToString:@"finalizePackage"])
|
|
183
180
|
[self finalizePackage :successCallback :errorCallback];
|
|
181
|
+
else if([action isEqualToString:@"endBackendTransaction"])
|
|
182
|
+
[self endBackendTransaction :successCallback :errorCallback];
|
|
184
183
|
else if([action isEqualToString:@"getTranslation"])
|
|
185
184
|
[self getTranslation :[args objectAtIndex:0] :[args objectAtIndex:1] :successCallback :errorCallback];
|
|
186
185
|
else
|
|
@@ -198,10 +197,6 @@ NSString* RGLWPaCertificateCompletionEvent = @"pa_certificate_completion";
|
|
|
198
197
|
NSString* RGLWTaCertificateCompletionEvent = @"ta_certificate_completion";
|
|
199
198
|
NSString* RGLWTaSignatureCompletionEvent = @"ta_signature_completion";
|
|
200
199
|
|
|
201
|
-
NSString* RGLWBleOnServiceConnectedEvent = @"bleOnServiceConnectedEvent";
|
|
202
|
-
NSString* RGLWBleOnServiceDisconnectedEvent = @"bleOnServiceDisconnectedEvent";
|
|
203
|
-
NSString* RGLWBleOnDeviceReadyEvent = @"bleOnDeviceReadyEvent";
|
|
204
|
-
|
|
205
200
|
NSString* RGLWVideoEncoderCompletionEvent = @"video_encoder_completion";
|
|
206
201
|
NSString* RGLWOnCustomButtonTappedEvent = @"onCustomButtonTappedEvent";
|
|
207
202
|
|
|
@@ -213,14 +208,6 @@ NSString* RGLWOnCustomButtonTappedEvent = @"onCustomButtonTappedEvent";
|
|
|
213
208
|
successCallback(RGLDocReader.shared.documentReaderStatus);
|
|
214
209
|
}
|
|
215
210
|
|
|
216
|
-
- (void) isAuthenticatorAvailableForUse:(RGLWCallback)successCallback :(RGLWCallback)errorCallback{
|
|
217
|
-
successCallback(RGLDocReader.shared.isAuthenticatorAvailableForUse ? @YES : @NO);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
- (void) isBlePermissionsGranted:(RGLWCallback)successCallback :(RGLWCallback)errorCallback {
|
|
221
|
-
errorCallback(@"isBlePermissionsGranted() is an android-only method");
|
|
222
|
-
}
|
|
223
|
-
|
|
224
211
|
- (void) getRfidSessionStatus:(RGLWCallback)successCallback :(RGLWCallback)errorCallback{
|
|
225
212
|
successCallback(RGLDocReader.shared.rfidSessionStatus);
|
|
226
213
|
}
|
|
@@ -300,7 +287,7 @@ NSString* RGLWOnCustomButtonTappedEvent = @"onCustomButtonTappedEvent";
|
|
|
300
287
|
}
|
|
301
288
|
|
|
302
289
|
- (void) initializeReaderWithBleDeviceConfig:(NSDictionary*)config :(RGLWCallback)successCallback :(RGLWCallback)errorCallback{
|
|
303
|
-
|
|
290
|
+
[RGLDocReader.shared initializeReaderWithConfig:[RGLWJSONConstructor bleDeviceConfigFromJson:config :bluetooth] completion:[self getInitCompletion :successCallback :errorCallback]];
|
|
304
291
|
}
|
|
305
292
|
|
|
306
293
|
- (void) deinitializeReader:(RGLWCallback)successCallback :(RGLWCallback)errorCallback{
|
|
@@ -444,8 +431,55 @@ NSString* RGLWOnCustomButtonTappedEvent = @"onCustomButtonTappedEvent";
|
|
|
444
431
|
successCallback(@"");
|
|
445
432
|
}
|
|
446
433
|
|
|
447
|
-
|
|
448
|
-
|
|
434
|
+
RGLBluetooth* bluetooth;
|
|
435
|
+
CBCentralManager* centralManager;
|
|
436
|
+
RGLWCallback savedCallbackForBluetoothResult;
|
|
437
|
+
|
|
438
|
+
- (void) connectBluetoothDevice:(NSString*)deviceName :(RGLWCallback)successCallback :(RGLWCallback)errorCallback {
|
|
439
|
+
// register callback for user's answer to bluetooth permission
|
|
440
|
+
centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
|
|
441
|
+
|
|
442
|
+
// return if already connected
|
|
443
|
+
if (bluetooth && bluetooth.state == RGLBluetoothConnectionStateConnected) return;
|
|
444
|
+
|
|
445
|
+
// start searching devices
|
|
446
|
+
if (!bluetooth) {
|
|
447
|
+
bluetooth = [RGLBluetooth new];
|
|
448
|
+
bluetooth.delegate = self;
|
|
449
|
+
}
|
|
450
|
+
savedCallbackForBluetoothResult = successCallback;
|
|
451
|
+
[bluetooth connectWithDeviceName:deviceName];
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// CBCentralManagerDelegate
|
|
455
|
+
- (void)centralManagerDidUpdateState:(CBCentralManager *)central {
|
|
456
|
+
if (central.state != CBManagerStatePoweredOn && savedCallbackForBluetoothResult)
|
|
457
|
+
[self bluetoothDeviceConnectionFailed];
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
// RGLBluetoothDelegate
|
|
461
|
+
- (void)didChangeConnectionState:(RGLBluetooth *)bluetooth state:(RGLBluetoothConnectionState)state {
|
|
462
|
+
if (state == RGLBluetoothConnectionStateNone && savedCallbackForBluetoothResult)
|
|
463
|
+
[self bluetoothDeviceConnectionFailed];
|
|
464
|
+
|
|
465
|
+
// set searching timeout
|
|
466
|
+
if (state == RGLBluetoothConnectionStateSearching)
|
|
467
|
+
[self performSelector:NSSelectorFromString(@"bluetoothDeviceConnectionFailed") withObject:nil afterDelay:7.0];
|
|
468
|
+
|
|
469
|
+
if (state == RGLBluetoothConnectionStateConnected) {
|
|
470
|
+
savedCallbackForBluetoothResult(@YES);
|
|
471
|
+
savedCallbackForBluetoothResult = nil;
|
|
472
|
+
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:NSSelectorFromString(@"bluetoothDeviceConnectionFailed") object:nil];
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
- (void) bluetoothDeviceConnectionFailed {
|
|
477
|
+
if (savedCallbackForBluetoothResult) {
|
|
478
|
+
savedCallbackForBluetoothResult(@NO);
|
|
479
|
+
savedCallbackForBluetoothResult = nil;
|
|
480
|
+
}
|
|
481
|
+
[bluetooth stopSearchDevices];
|
|
482
|
+
[bluetooth disconnect];
|
|
449
483
|
}
|
|
450
484
|
|
|
451
485
|
- (void) setLocalizationDictionary:(NSDictionary*)dictionary :(RGLWCallback)successCallback :(RGLWCallback)errorCallback{
|
|
@@ -476,6 +510,14 @@ NSString* RGLWOnCustomButtonTappedEvent = @"onCustomButtonTappedEvent";
|
|
|
476
510
|
successCallback([RGLWJSONConstructor generateDocReaderVersion:RGLDocReader.shared.version]);
|
|
477
511
|
}
|
|
478
512
|
|
|
513
|
+
- (void) isAuthenticatorRFIDAvailableForUse:(RGLWCallback)successCallback :(RGLWCallback)errorCallback{
|
|
514
|
+
successCallback(RGLDocReader.shared.isAuthenticatorRFIDAvailableForUse ? @YES : @NO);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
- (void) isAuthenticatorAvailableForUse:(RGLWCallback)successCallback :(RGLWCallback)errorCallback{
|
|
518
|
+
successCallback(RGLDocReader.shared.isAuthenticatorAvailableForUse ? @YES : @NO);
|
|
519
|
+
}
|
|
520
|
+
|
|
479
521
|
- (void) getDocReaderDocumentsDatabase:(RGLWCallback)successCallback :(RGLWCallback)errorCallback {
|
|
480
522
|
if(RGLDocReader.shared.version != nil)
|
|
481
523
|
successCallback([RGLWJSONConstructor dictToString:[RGLWJSONConstructor generateDocReaderDocumentsDatabase:RGLDocReader.shared.version.database]]);
|
|
@@ -589,6 +631,11 @@ NSString* RGLWOnCustomButtonTappedEvent = @"onCustomButtonTappedEvent";
|
|
|
589
631
|
}];
|
|
590
632
|
}
|
|
591
633
|
|
|
634
|
+
- (void) endBackendTransaction:(RGLWCallback)successCallback :(RGLWCallback)errorCallback{
|
|
635
|
+
[RGLDocReader.shared endBackendTransaction];
|
|
636
|
+
successCallback(@"");
|
|
637
|
+
}
|
|
638
|
+
|
|
592
639
|
- (void) getTranslation:(NSString*)className :(NSNumber*)value :(RGLWCallback)successCallback :(RGLWCallback)errorCallback{
|
|
593
640
|
if([className isEqualToString:@"RFIDErrorCodes"])
|
|
594
641
|
successCallback(RGLRFIDErrorCodesGetStringValue([value intValue]));
|
package/package.json
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regulaforensics/react-native-document-reader-api",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.23-rc",
|
|
4
4
|
"description": "React Native module for reading and validation of identification documents (API framework)",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
8
8
|
},
|
|
9
9
|
"keywords": [
|
|
10
|
-
"react-native",
|
|
11
|
-
"documentreader",
|
|
12
|
-
"reader",
|
|
13
|
-
"scanner",
|
|
14
|
-
"regula"
|
|
10
|
+
"react-native", "documentreader", "reader", "scanner", "regula"
|
|
15
11
|
],
|
|
16
12
|
"author": "Regulaforensics",
|
|
17
13
|
"license": "commercial",
|