Skip to content

Commit 494f9ef

Browse files
author
Jenkins
committed
5.8.1
1 parent 6b36783 commit 494f9ef

12 files changed

Lines changed: 301 additions & 82 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ $ pod install
3434
5. iOS:
3535
* Copy the `regula.license` file to the `example/ios/DocumentReader` folder.
3636
* Change the Bundle Identifier to the one you have specified during the registration at [licensing.regulaforensics.com](https://licensing.regulaforensics.com).
37-
* Run `react-native run-ios` inside `example` folder - this is just one way to run the app. You can also run it directly from within Xcode.
37+
* Run `npx react-native run-ios` inside `example` folder - this is just one way to run the app. You can also run it directly from within Xcode.
3838

3939
### Troubleshooting license issues
4040
If you have issues with license verification when running the application, please verify that next is true:

android/build.gradle

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,10 @@ repositories {
3737
rootProject.allprojects {
3838
repositories {
3939
maven {
40-
url "http://maven.regulaforensics.com/RegulaDocumentReader"
41-
allowInsecureProtocol true
40+
url "https://maven.regulaforensics.com/RegulaDocumentReader"
4241
}
4342
maven {
44-
url "http://maven.regulaforensics.com/RegulaDocumentReader/Beta"
45-
allowInsecureProtocol true
43+
url "https://maven.regulaforensics.com/RegulaDocumentReader/Beta"
4644
}
4745
}
4846
}

android/src/main/java/com/regula/documentreader/Helpers.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,4 +136,11 @@ static List<String> stringListFromJson(JSONArray jsonArray) {
136136
result.add(jsonArray.optString(i));
137137
return result;
138138
}
139+
140+
static String[] stringArrayFromJson(JSONArray jsonArray) {
141+
String[] result = new String[jsonArray.length()];
142+
for (int i = 0; i < jsonArray.length(); i++)
143+
result[i] = jsonArray.optString(i);
144+
return result;
145+
}
139146
}

android/src/main/java/com/regula/documentreader/RNRegulaDocumentReaderModule.java

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.regula.documentreader;
22

3+
import android.annotation.SuppressLint;
34
import android.app.Activity;
45
import android.app.PendingIntent;
56
import android.content.Context;
@@ -29,22 +30,28 @@
2930
import com.regula.documentreader.api.completions.IRfidTASignatureCompletion;
3031
import com.regula.documentreader.api.enums.DocReaderAction;
3132
import com.regula.documentreader.api.errors.DocumentReaderException;
33+
import com.regula.documentreader.api.params.DocReaderConfig;
3234
import com.regula.documentreader.api.params.ImageInputParam;
3335
import com.regula.documentreader.api.params.rfid.PKDCertificate;
3436
import com.regula.documentreader.api.params.rfid.authorization.PAResourcesIssuer;
3537
import com.regula.documentreader.api.params.rfid.authorization.TAChallenge;
3638
import com.regula.documentreader.api.results.DocumentReaderResults;
39+
import com.regula.documentreader.api.parser.DocReaderResultsJsonParser;
3740

3841
import org.json.JSONArray;
3942
import org.json.JSONException;
4043
import org.json.JSONObject;
4144

4245
import java.io.File;
46+
import java.io.IOException;
47+
import java.io.InputStream;
4348
import java.util.ArrayList;
4449
import java.util.List;
4550

4651
import static com.regula.documentreader.api.DocumentReader.Instance;
4752

53+
import androidx.annotation.NonNull;
54+
4855
@SuppressWarnings({"ConstantConditions", "RedundantSuppression"})
4956
public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule implements ActivityEventListener, LifecycleEventListener {
5057
private final static String prepareDatabaseProgressChangeEvent = "prepareDatabaseProgressChangeEvent";
@@ -181,6 +188,9 @@ public void error(String s) {
181188
};
182189
try {
183190
switch (action) {
191+
case "initializeReaderAutomatically":
192+
initializeReaderAutomatically(callback);
193+
break;
184194
case "getAPIVersion":
185195
getAPIVersion(callback);
186196
break;
@@ -337,6 +347,9 @@ public void error(String s) {
337347
case "provideTASignature":
338348
provideTASignature(callback, args(0));
339349
break;
350+
case "parseCoreResults":
351+
parseCoreResults(callback, args(0));
352+
break;
340353
case "initializeReaderWithDatabasePath":
341354
initializeReaderWithDatabasePath(callback, args(0), args(1));
342355
break;
@@ -376,6 +389,7 @@ private void startForegroundDispatch(final Activity activity) {
376389
};
377390
Intent intent = new Intent(activity.getApplicationContext(), activity.getClass());
378391
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
392+
@SuppressLint("UnspecifiedImmutableFlag")
379393
PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, intent, 0);
380394
NfcAdapter.getDefaultAdapter(getActivity()).enableForegroundDispatch(activity, pendingIntent, filters, techList);
381395
}
@@ -387,10 +401,32 @@ private void stopBackgroundRFID() {
387401
backgroundRFIDEnabled = false;
388402
}
389403

404+
private void initializeReaderAutomatically(Callback callback) {
405+
if (!Instance().isReady())
406+
try {
407+
InputStream is = getContext().getAssets().open("regula.license");
408+
byte[] license = new byte[is.available()];
409+
//noinspection ResultOfMethodCallIgnored
410+
is.read(license);
411+
Instance().initializeReader(getContext(), new DocReaderConfig(license), getInitCompletion(callback));
412+
is.close();
413+
} catch (IOException e) {
414+
e.printStackTrace();
415+
callback.error("problem reading license(see logs)");
416+
}
417+
else
418+
callback.success("already initialized");
419+
}
420+
390421
private void getAvailableScenarios(Callback callback) throws JSONException {
391422
callback.success(JSONConstructor.generateList(Instance().availableScenarios, JSONConstructor::generateDocumentReaderScenario).toString());
392423
}
393424

425+
private void parseCoreResults(Callback callback, String json) {
426+
DocumentReaderResults results = (DocumentReaderResults) DocReaderResultsJsonParser.parseCoreResults(json).get("docReaderResults");
427+
callback.success(JSONConstructor.generateDocumentReaderResults(results, getContext()).toString());
428+
}
429+
394430
private void getAPIVersion(Callback callback) {
395431
callback.success(Instance().version.api);
396432
}
@@ -471,27 +507,27 @@ private void licenseIsRfidAvailable(Callback callback) {
471507
}
472508

473509
private void getDocumentReaderIsReady(Callback callback) {
474-
callback.success(Instance().getDocumentReaderIsReady());
510+
callback.success(Instance().isReady());
475511
}
476512

477513
private void getDocumentReaderStatus(Callback callback) {
478-
callback.success(Instance().getDocumentReaderStatus());
514+
callback.success(Instance().isReady());
479515
}
480516

481517
private void isRFIDAvailableForUse(Callback callback) {
482518
callback.success(Instance().isRFIDAvailableForUse());
483519
}
484520

485521
private void initializeReader(Callback callback, Object license) {
486-
if (!Instance().getDocumentReaderIsReady())
487-
Instance().initializeReader(getContext(), Base64.decode(license.toString(), Base64.DEFAULT), getInitCompletion(callback));
522+
if (!Instance().isReady())
523+
Instance().initializeReader(getContext(), new DocReaderConfig(Base64.decode(license.toString(), Base64.DEFAULT)), getInitCompletion(callback));
488524
else
489525
callback.success("already initialized");
490526
}
491527

492528
private void initializeReaderWithDatabase(Callback callback, Object license, Object db) {
493-
if (!Instance().getDocumentReaderIsReady())
494-
Instance().initializeReader(getContext(), Base64.decode(license.toString(), Base64.DEFAULT), Base64.decode(db.toString(), Base64.DEFAULT), getInitCompletion(callback));
529+
if (!Instance().isReady())
530+
Instance().initializeReader(getContext(), new DocReaderConfig(Base64.decode(license.toString(), Base64.DEFAULT), Base64.decode(db.toString(), Base64.DEFAULT)), getInitCompletion(callback));
495531
else
496532
callback.success("already initialized");
497533
}
@@ -593,9 +629,9 @@ private void stopScanner(Callback callback) {
593629
private void startRFIDReader(@SuppressWarnings("unused") Callback callback) {
594630
stopBackgroundRFID();
595631
IRfidReaderRequest delegate = null;
596-
if(rfidDelegate == RFIDDelegate.NO_PA)
632+
if (rfidDelegate == RFIDDelegate.NO_PA)
597633
delegate = getIRfidReaderRequestNoPA();
598-
if(rfidDelegate == RFIDDelegate.FULL)
634+
if (rfidDelegate == RFIDDelegate.FULL)
599635
delegate = getIRfidReaderRequest();
600636
Instance().startRFIDReader(getContext(), getCompletion(), delegate, getIRfidNotificationCompletion());
601637
}
@@ -743,20 +779,20 @@ private IDocumentReaderInitCompletion getInitCompletion(Callback callback) {
743779
private IRfidReaderRequest getIRfidReaderRequest() {
744780
return new IRfidReaderRequest() {
745781
@Override
746-
public void onRequestPACertificates(byte[] serialNumber, PAResourcesIssuer issuer, IRfidPKDCertificateCompletion completion) {
782+
public void onRequestPACertificates(byte[] serialNumber, PAResourcesIssuer issuer, @NonNull IRfidPKDCertificateCompletion completion) {
747783
paCertificateCompletion = completion;
748784
completion.onCertificatesReceived(new PKDCertificate[0]);
749785
sendPACertificateCompletion(serialNumber, issuer);
750786
}
751787

752788
@Override
753-
public void onRequestTACertificates(String keyCAR, IRfidPKDCertificateCompletion completion) {
789+
public void onRequestTACertificates(String keyCAR, @NonNull IRfidPKDCertificateCompletion completion) {
754790
taCertificateCompletion = completion;
755791
sendTACertificateCompletion(keyCAR);
756792
}
757793

758794
@Override
759-
public void onRequestTASignature(TAChallenge challenge, IRfidTASignatureCompletion completion) {
795+
public void onRequestTASignature(TAChallenge challenge, @NonNull IRfidTASignatureCompletion completion) {
760796
taSignatureCompletion = completion;
761797
sendTASignatureCompletion(challenge);
762798
}
@@ -766,19 +802,19 @@ public void onRequestTASignature(TAChallenge challenge, IRfidTASignatureCompleti
766802
private IRfidReaderRequest getIRfidReaderRequestNoPA() {
767803
return new IRfidReaderRequest() {
768804
@Override
769-
public void onRequestPACertificates(byte[] serialNumber, PAResourcesIssuer issuer, IRfidPKDCertificateCompletion completion) {
805+
public void onRequestPACertificates(byte[] serialNumber, PAResourcesIssuer issuer, @NonNull IRfidPKDCertificateCompletion completion) {
770806
paCertificateCompletion = null;
771807
completion.onCertificatesReceived(new PKDCertificate[0]);
772808
}
773809

774810
@Override
775-
public void onRequestTACertificates(String keyCAR, IRfidPKDCertificateCompletion completion) {
811+
public void onRequestTACertificates(String keyCAR, @NonNull IRfidPKDCertificateCompletion completion) {
776812
taCertificateCompletion = completion;
777813
sendTACertificateCompletion(keyCAR);
778814
}
779815

780816
@Override
781-
public void onRequestTASignature(TAChallenge challenge, IRfidTASignatureCompletion completion) {
817+
public void onRequestTASignature(TAChallenge challenge, @NonNull IRfidTASignatureCompletion completion) {
782818
taSignatureCompletion = completion;
783819
sendTASignatureCompletion(challenge);
784820
}

android/src/main/java/com/regula/documentreader/RegulaConfig.java

Lines changed: 69 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.json.JSONException;
66

77
import com.regula.documentreader.api.DocumentReader;
8+
import com.regula.documentreader.api.params.ImageQA;
89
import com.regula.documentreader.api.params.ParamsCustomization;
910
import com.regula.documentreader.api.params.Functionality;
1011
import com.regula.documentreader.api.params.ProcessParam;
@@ -100,6 +101,8 @@ private static void setFunctionality(Functionality functionality, JSONObject opt
100101
editor.setDoRecordProcessingVideo(opts.getBoolean("recordScanningProcess"));
101102
if (opts.has("manualMultipageMode"))
102103
editor.setManualMultipageMode(opts.getBoolean("manualMultipageMode"));
104+
if (opts.has("exposure"))
105+
editor.setExposure(BigDecimal.valueOf(opts.getDouble("exposure")).floatValue());
103106

104107
editor.apply();
105108
}
@@ -165,6 +168,47 @@ private static void setProcessParams(ProcessParam processParams, JSONObject opts
165168
processParams.checkHologram = opts.getBoolean("checkHologram");
166169
if (opts.has("checkRequiredTextFields"))
167170
processParams.checkRequiredTextFields = opts.getBoolean("checkRequiredTextFields");
171+
if (opts.has("depersonalizeLog"))
172+
processParams.depersonalizeLog = opts.getBoolean("depersonalizeLog");
173+
if (opts.has("resultTypeOutput"))
174+
processParams.resultTypeOutput = intArrayFromJson(opts.getJSONArray("resultTypeOutput"));
175+
if (opts.has("generateDoublePageSpreadImage"))
176+
processParams.generateDoublePageSpreadImage = opts.getBoolean("generateDoublePageSpreadImage");
177+
if (opts.has("imageDpiOutMax"))
178+
processParams.imageDpiOutMax = opts.getInt("imageDpiOutMax");
179+
if (opts.has("alreadyCropped"))
180+
processParams.alreadyCropped = opts.getBoolean("alreadyCropped");
181+
if (opts.has("forceDocID"))
182+
processParams.forceDocID = opts.getInt("forceDocID");
183+
if (opts.has("matchTextFieldMask"))
184+
processParams.matchTextFieldMask = opts.getBoolean("matchTextFieldMask");
185+
if (opts.has("fastDocDetect"))
186+
processParams.fastDocDetect = opts.getBoolean("fastDocDetect");
187+
if (opts.has("updateOCRValidityByGlare"))
188+
processParams.updateOCRValidityByGlare = opts.getBoolean("updateOCRValidityByGlare");
189+
if (opts.has("imageQA")) {
190+
ImageQA img = new ImageQA();
191+
img.fromJson(opts.getJSONObject("imageQA"));
192+
processParams.imageQA = img;
193+
}
194+
if (opts.has("forceDocFormat"))
195+
processParams.forceDocFormat = opts.getInt("forceDocFormat");
196+
if (opts.has("noGraphics"))
197+
processParams.noGraphics = opts.getBoolean("noGraphics");
198+
if (opts.has("documentAreaMin"))
199+
processParams.documentAreaMin = opts.getDouble("documentAreaMin");
200+
if (opts.has("multiDocOnImage"))
201+
processParams.multiDocOnImage = opts.getBoolean("multiDocOnImage");
202+
if (opts.has("shiftExpiryDate"))
203+
processParams.shiftExpiryDate = opts.getInt("shiftExpiryDate");
204+
if (opts.has("minimalHolderAge"))
205+
processParams.minimalHolderAge = opts.getInt("minimalHolderAge");
206+
if (opts.has("mrzFormatsFilter"))
207+
processParams.mrzFormatsFilter = stringArrayFromJson(opts.getJSONArray("mrzFormatsFilter"));
208+
if (opts.has("forceReadMrzBeforeLocate"))
209+
processParams.forceReadMrzBeforeLocate = opts.getBoolean("forceReadMrzBeforeLocate");
210+
if (opts.has("parseBarcodes"))
211+
processParams.parseBarcodes = opts.getBoolean("parseBarcodes");
168212
}
169213

170214
private static void setCustomization(ParamsCustomization customization, JSONObject opts, Context context) throws JSONException {
@@ -278,7 +322,7 @@ private static void setCustomization(ParamsCustomization customization, JSONObje
278322
if (opts.has("statusBackgroundColor"))
279323
editor.setStatusBackgroundColor(opts.getString("statusBackgroundColor"));
280324

281-
editor.apply();
325+
editor.applyImmediately(context);
282326
}
283327

284328
private static JSONObject getFunctionality(Functionality functionality) throws JSONException {
@@ -316,6 +360,7 @@ private static JSONObject getFunctionality(Functionality functionality) throws J
316360
object.put("isCameraTorchCheckDisabled", functionality.isCameraTorchCheckDisabled());
317361
object.put("recordScanningProcess", functionality.doRecordProcessingVideo());
318362
object.put("manualMultipageMode", functionality.isManualMultipageMode());
363+
object.put("exposure", functionality.getExposure());
319364

320365
return object;
321366
}
@@ -382,6 +427,10 @@ private static JSONObject getCustomization(ParamsCustomization customization) th
382427

383428
private static JSONObject getProcessParams(ProcessParam processParams) throws JSONException {
384429
JSONObject object = new JSONObject();
430+
object.put("documentIDList", processParams.documentIDList != null ? generateIntArray(processParams.documentIDList) : null);
431+
object.put("barcodeTypes", processParams.doBarcodes != null ? generateArray(processParams.doBarcodes) : null);
432+
object.put("fieldTypesFilter", processParams.fieldTypesFilter != null ? generateIntArray(processParams.fieldTypesFilter) : null);
433+
object.put("faceMetaData", processParams.faceMetaData != null ? generateArray(processParams.faceMetaData, JSONConstructor::generateFaceMetaData) : null);
385434
object.put("scenario", processParams.scenario);
386435
object.put("measureSystem", processParams.measureSystem);
387436
object.put("uvTorchEnabled", processParams.uvTorchEnabled);
@@ -409,14 +458,25 @@ private static JSONObject getProcessParams(ProcessParam processParams) throws JS
409458
object.put("returnCroppedBarcode", processParams.returnCroppedBarcode);
410459
object.put("checkHologram", processParams.checkHologram);
411460
object.put("checkRequiredTextFields", processParams.checkRequiredTextFields);
412-
if (processParams.documentIDList != null)
413-
object.put("documentIDList", generateIntArray(processParams.documentIDList));
414-
if (processParams.doBarcodes != null)
415-
object.put("barcodeTypes", generateArray(processParams.doBarcodes));
416-
if (processParams.fieldTypesFilter != null)
417-
object.put("fieldTypesFilter", generateIntArray(processParams.fieldTypesFilter));
418-
if (processParams.faceMetaData != null)
419-
object.put("faceMetaData", generateArray(processParams.faceMetaData, JSONConstructor::generateFaceMetaData));
461+
object.put("depersonalizeLog", processParams.depersonalizeLog);
462+
object.put("resultTypeOutput", processParams.resultTypeOutput);
463+
object.put("generateDoublePageSpreadImage", processParams.generateDoublePageSpreadImage);
464+
object.put("imageDpiOutMax", processParams.imageDpiOutMax);
465+
object.put("alreadyCropped", processParams.alreadyCropped);
466+
object.put("forceDocID", processParams.forceDocID);
467+
object.put("matchTextFieldMask", processParams.matchTextFieldMask);
468+
object.put("fastDocDetect", processParams.fastDocDetect);
469+
object.put("updateOCRValidityByGlare", processParams.updateOCRValidityByGlare);
470+
object.put("imageQA", processParams.imageQA != null ? processParams.imageQA.toJsonObject() : null);
471+
object.put("forceDocFormat", processParams.forceDocFormat);
472+
object.put("noGraphics", processParams.noGraphics);
473+
object.put("documentAreaMin", processParams.documentAreaMin);
474+
object.put("multiDocOnImage", processParams.multiDocOnImage);
475+
object.put("shiftExpiryDate", processParams.shiftExpiryDate);
476+
object.put("minimalHolderAge", processParams.minimalHolderAge);
477+
object.put("mrzFormatsFilter", processParams.mrzFormatsFilter != null ? generateArray(processParams.mrzFormatsFilter) : null);
478+
object.put("forceReadMrzBeforeLocate", processParams.forceReadMrzBeforeLocate);
479+
object.put("parseBarcodes", processParams.parseBarcodes);
420480

421481
return object;
422482
}

example/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"react-native": "0.63.4",
1616
"react-native-check-box": "^2.1.7",
1717
"react-native-customized-image-picker": "^1.1.0",
18-
"@regulaforensics/react-native-document-reader-api": "^5.8.0",
18+
"@regulaforensics/react-native-document-reader-api": "^5.8.1",
1919
"@regulaforensics/react-native-document-reader-core-fullrfid": "^5.8.0",
2020
"react-native-progress": "^4.1.2",
2121
"react-native-fs": "^2.16.6",

0 commit comments

Comments
 (0)