@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/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"]) config.oneShotIdentification = 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
- return [[RGLDocumentReaderResults alloc]
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:@"startBluetoothService"])
135
- [self startBluetoothService :successCallback :errorCallback];
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
- errorCallback(@"initializeReaderWithBleDeviceConfig() is an android-only method");
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
- - (void) startBluetoothService:(RGLWCallback)successCallback :(RGLWCallback)errorCallback {
448
- errorCallback(@"startBluetoothService() is an android-only method");
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.4.706-rc",
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",
@@ -1,5 +0,0 @@
1
- blank_issues_enabled: false
2
- contact_links:
3
- - name: Submit a request
4
- url: https://support.regulaforensics.com/hc/requests/new?utm_source=github
5
- about: Submit any requests to Regula Support Team