blinkid-react-native
Advanced tools
| import { OverlaySettings } from '../overlaySettings' | ||
| import { AndroidCameraResolutionPreset, | ||
| iOSCameraResolutionPreset | ||
| } from '../types' | ||
| /** | ||
@@ -170,2 +172,35 @@ * Class for setting up document overlay. | ||
| this.showCancelButton = true; | ||
| /** | ||
| * String: instructions for the user when blur has been detected on the document. | ||
| * If null, default value will be used. | ||
| */ | ||
| this.errorBlurDetected = null; | ||
| /** | ||
| * String: instructions for the user when glare has been detected on the document. | ||
| * If null, default value will be used. | ||
| */ | ||
| this.errorGlareDetected = null; | ||
| /** | ||
| * Defines possible Android device camera video resolution preset. | ||
| * | ||
| * Default: PresetDefault | ||
| */ | ||
| this.androidCameraResolutionPreset = AndroidCameraResolutionPreset.PresetDefault; | ||
| /** | ||
| * Defines possible iOS device camera video resolution preset. | ||
| * | ||
| * Default: PresetOptimal | ||
| */ | ||
| this.iosCameraResolutionPreset = iOSCameraResolutionPreset.PresetOptimal; | ||
| /** | ||
| * Option to set whether legacy camera API should be used even on Lollipop devices that support newer Camera2 API. | ||
| * WARNING: This setting should only be used if the new Camera2 API is not working on the device. This setting should not be applied on all devices. | ||
| * Default: false | ||
| */ | ||
| this.enableAndroidLegacyCameraApi = false; | ||
| } | ||
@@ -172,0 +207,0 @@ } |
+1
-1
| { | ||
| "name": "blinkid-react-native", | ||
| "version": "6.7.0", | ||
| "version": "6.9.0", | ||
| "description": "A small and powerful ID card scanning library. Powered by Microblink (www.microblink.com).", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
+1
-1
@@ -25,3 +25,3 @@ # BlinkID SDK wrapper for React Native | ||
| BlinkID React Native was built and tested with [React Native v0.71.2](https://github.com/facebook/react-native/releases/tag/v0.71.2) | ||
| BlinkID React Native was built and tested with [React Native v0.74.0](https://github.com/facebook/react-native/releases/tag/v0.74.0) | ||
@@ -28,0 +28,0 @@ ## Installation |
@@ -16,2 +16,3 @@ import { Recognizer, RecognizerResult } from '../recognizer' | ||
| RecognitionModeFilter, | ||
| StrictnessLevel, | ||
@@ -151,2 +152,7 @@ | ||
| /** | ||
| * The transcription of the document subtype. | ||
| */ | ||
| this.documentSubtype = nativeResult.documentSubtype; | ||
| /** | ||
| * The driver license detailed info. | ||
@@ -308,2 +314,12 @@ */ | ||
| /** | ||
| * The remarks on the residence permit. | ||
| */ | ||
| this.remarks = nativeResult.remarks; | ||
| /** | ||
| * The residence permit type. | ||
| */ | ||
| this.residencePermitType = nativeResult.residencePermitType; | ||
| /** | ||
| * The residential stauts of the document owner. | ||
@@ -334,2 +350,7 @@ */ | ||
| /** | ||
| * The visa type. | ||
| */ | ||
| this.visaType = nativeResult.visaType; | ||
| } | ||
@@ -351,9 +372,2 @@ } | ||
| /** | ||
| * Defines whether blured frames filtering is allowed | ||
| * | ||
| * | ||
| */ | ||
| this.allowBlurFilter = true; | ||
| /** | ||
| * Proceed with scanning the back side even if the front side result is uncertain. | ||
@@ -390,2 +404,28 @@ * This only works for still images - video feeds will ignore this setting. | ||
| /** | ||
| * Strictness level for blur detection. | ||
| * | ||
| * | ||
| */ | ||
| this.blurStrictnessLevel = StrictnessLevel.Normal; | ||
| /** | ||
| * Get custom class rules. | ||
| */ | ||
| this.customClassRules = []; | ||
| /** | ||
| * Skip processing of the blurred frames. | ||
| * | ||
| * | ||
| */ | ||
| this.enableBlurFilter = true; | ||
| /** | ||
| * Skip processing of the glared frames. | ||
| * | ||
| * | ||
| */ | ||
| this.enableGlareFilter = true; | ||
| /** | ||
| * Property for setting DPI for face images | ||
@@ -415,2 +455,9 @@ * Valid ranges are [100,400]. Setting DPI out of valid ranges throws an exception | ||
| /** | ||
| * Strictness level for glare detection. | ||
| * | ||
| * | ||
| */ | ||
| this.glareStrictnessLevel = StrictnessLevel.Normal; | ||
| /** | ||
| * Configure the number of characters per field that are allowed to be inconsistent in data match. | ||
@@ -417,0 +464,0 @@ * |
@@ -16,2 +16,3 @@ import { Recognizer, RecognizerResult } from '../recognizer' | ||
| RecognitionModeFilter, | ||
| StrictnessLevel, | ||
@@ -123,2 +124,7 @@ | ||
| /** | ||
| * The transcription of the document subtype. | ||
| */ | ||
| this.documentSubtype = nativeResult.documentSubtype; | ||
| /** | ||
| * The driver license detailed info. | ||
@@ -255,2 +261,12 @@ */ | ||
| /** | ||
| * The remarks on the residence permit. | ||
| */ | ||
| this.remarks = nativeResult.remarks; | ||
| /** | ||
| * The residence permit type. | ||
| */ | ||
| this.residencePermitType = nativeResult.residencePermitType; | ||
| /** | ||
| * The residential stauts of the document owner. | ||
@@ -276,2 +292,7 @@ */ | ||
| /** | ||
| * The visa type. | ||
| */ | ||
| this.visaType = nativeResult.visaType; | ||
| /** | ||
| * Defines the data extracted from the visual inspection zone | ||
@@ -297,9 +318,2 @@ */ | ||
| /** | ||
| * Defines whether blured frames filtering is allowed | ||
| * | ||
| * | ||
| */ | ||
| this.allowBlurFilter = true; | ||
| /** | ||
| * Defines whether returning of unparsed MRZ (Machine Readable Zone) results is allowed | ||
@@ -328,2 +342,28 @@ * | ||
| /** | ||
| * Strictness level for blur detection. | ||
| * | ||
| * | ||
| */ | ||
| this.blurStrictnessLevel = StrictnessLevel.Normal; | ||
| /** | ||
| * Get custom class rules. | ||
| */ | ||
| this.customClassRules = []; | ||
| /** | ||
| * Skip processing of the blurred frames. | ||
| * | ||
| * | ||
| */ | ||
| this.enableBlurFilter = true; | ||
| /** | ||
| * Skip processing of the glared frames. | ||
| * | ||
| * | ||
| */ | ||
| this.enableGlareFilter = true; | ||
| /** | ||
| * Property for setting DPI for face images | ||
@@ -353,2 +393,9 @@ * Valid ranges are [100,400]. Setting DPI out of valid ranges throws an exception | ||
| /** | ||
| * Strictness level for glare detection. | ||
| * | ||
| * | ||
| */ | ||
| this.glareStrictnessLevel = StrictnessLevel.Normal; | ||
| /** | ||
| * Pading is a minimum distance from the edge of the frame and is defined as a percentage of the frame width. Default value is 0.0f and in that case | ||
@@ -355,0 +402,0 @@ * padding edge and image edge are the same. |
@@ -16,2 +16,3 @@ import { Recognizer, RecognizerResult } from '../recognizer' | ||
| RecognitionModeFilter, | ||
| StrictnessLevel, | ||
@@ -18,0 +19,0 @@ |
@@ -16,2 +16,3 @@ import { Recognizer, RecognizerResult } from '../recognizer' | ||
| RecognitionModeFilter, | ||
| StrictnessLevel, | ||
@@ -18,0 +19,0 @@ |
@@ -16,2 +16,3 @@ import { Recognizer, RecognizerResult } from '../recognizer' | ||
| RecognitionModeFilter, | ||
| StrictnessLevel, | ||
@@ -18,0 +19,0 @@ |
@@ -16,2 +16,3 @@ import { Recognizer, RecognizerResult } from '../recognizer' | ||
| RecognitionModeFilter, | ||
| StrictnessLevel, | ||
@@ -18,0 +19,0 @@ |
@@ -16,2 +16,3 @@ import { Recognizer, RecognizerResult } from '../recognizer' | ||
| RecognitionModeFilter, | ||
| StrictnessLevel, | ||
@@ -18,0 +19,0 @@ |
@@ -16,2 +16,3 @@ import { Recognizer, RecognizerResult } from '../recognizer' | ||
| RecognitionModeFilter, | ||
| StrictnessLevel, | ||
@@ -18,0 +19,0 @@ |
@@ -28,5 +28,5 @@ rootProject.allprojects { | ||
| implementation 'com.facebook.react:react-native:+' | ||
| implementation('com.microblink:blinkid:6.7.0@aar') { | ||
| implementation('com.microblink:blinkid:6.9.0@aar') { | ||
| transitive = true | ||
| } | ||
| } |
@@ -34,2 +34,3 @@ package com.microblink.blinkid.reactnative; | ||
| import com.microblink.blinkid.view.recognition.ScanResultListener; | ||
| import com.microblink.blinkid.licence.exception.LicenceKeyException; | ||
@@ -79,11 +80,12 @@ import com.microblink.blinkid.uisettings.UISettings; | ||
| public void scanWithCamera(ReadableMap jsonOverlaySettings, ReadableMap jsonRecognizerCollection, ReadableMap license, Promise promise) { | ||
| prepareScanning(license, promise); | ||
| try { | ||
| LanguageUtils.setLanguageAndCountry(jsonOverlaySettings.getString("language"), | ||
| jsonOverlaySettings.getString("country"), | ||
| getCurrentActivity()); | ||
| } catch (Exception e) {} | ||
| mRecognizerBundle = RecognizerSerializers.INSTANCE.deserializeRecognizerCollection(jsonRecognizerCollection); | ||
| UISettings overlaySettings = OverlaySettingsSerializers.INSTANCE.getOverlaySettings(getReactApplicationContext(), jsonOverlaySettings, mRecognizerBundle); | ||
| ActivityRunner.startActivityForResult(getCurrentActivity(), REQUEST_CODE, overlaySettings); | ||
| if(prepareScanning(license, promise)) { | ||
| try { | ||
| LanguageUtils.setLanguageAndCountry(jsonOverlaySettings.getString("language"), | ||
| jsonOverlaySettings.getString("country"), | ||
| getCurrentActivity()); | ||
| } catch (Exception e) {} | ||
| mRecognizerBundle = RecognizerSerializers.INSTANCE.deserializeRecognizerCollection(jsonRecognizerCollection); | ||
| UISettings overlaySettings = OverlaySettingsSerializers.INSTANCE.getOverlaySettings(getReactApplicationContext(), jsonOverlaySettings, mRecognizerBundle); | ||
| ActivityRunner.startActivityForResult(getCurrentActivity(), REQUEST_CODE, overlaySettings); | ||
| } | ||
| } | ||
@@ -95,67 +97,67 @@ | ||
| mScanPromise = promise; | ||
| prepareScanning(license, promise); | ||
| if(prepareScanning(license, promise)) { | ||
| ScanResultListener mScanResultListenerBackSide = new ScanResultListener() { | ||
| @Override | ||
| public void onScanningDone(@NonNull RecognitionSuccessType recognitionSuccessType) { | ||
| mFirstSideScanned = false; | ||
| handleDirectApiResult(recognitionSuccessType); | ||
| } | ||
| @Override | ||
| public void onUnrecoverableError(@NonNull Throwable throwable) { | ||
| promise.reject(throwable); | ||
| } | ||
| }; | ||
| ScanResultListener mScanResultListenerBackSide = new ScanResultListener() { | ||
| @Override | ||
| public void onScanningDone(@NonNull RecognitionSuccessType recognitionSuccessType) { | ||
| mFirstSideScanned = false; | ||
| handleDirectApiResult(recognitionSuccessType); | ||
| } | ||
| @Override | ||
| public void onUnrecoverableError(@NonNull Throwable throwable) { | ||
| promise.reject(throwable); | ||
| } | ||
| }; | ||
| FirstSideRecognitionCallback mFirstSideRecognitionCallback = new FirstSideRecognitionCallback() { | ||
| @Override | ||
| public void onFirstSideRecognitionFinished() { | ||
| mFirstSideScanned = true; | ||
| } | ||
| }; | ||
| FirstSideRecognitionCallback mFirstSideRecognitionCallback = new FirstSideRecognitionCallback() { | ||
| @Override | ||
| public void onFirstSideRecognitionFinished() { | ||
| mFirstSideScanned = true; | ||
| } | ||
| }; | ||
| ScanResultListener mScanResultListenerFrontSide = new ScanResultListener() { | ||
| @Override | ||
| public void onScanningDone(@NonNull RecognitionSuccessType recognitionSuccessType) { | ||
| if (mFirstSideScanned == true) { | ||
| //multiside recognizer used | ||
| try { | ||
| if (backImage != null) { | ||
| processImage(backImage.getString(PARAM_BACK_IMAGE), mScanResultListenerBackSide); | ||
| } else if (recognitionSuccessType != RecognitionSuccessType.UNSUCCESSFUL) { | ||
| handleDirectApiResult(recognitionSuccessType); | ||
| } else { | ||
| handleDirectApiError("Could not extract the information from the front side and back side is empty!", promise); | ||
| ScanResultListener mScanResultListenerFrontSide = new ScanResultListener() { | ||
| @Override | ||
| public void onScanningDone(@NonNull RecognitionSuccessType recognitionSuccessType) { | ||
| if (mFirstSideScanned == true) { | ||
| //multiside recognizer used | ||
| try { | ||
| if (backImage != null) { | ||
| processImage(backImage.getString(PARAM_BACK_IMAGE), mScanResultListenerBackSide); | ||
| } else if (recognitionSuccessType != RecognitionSuccessType.UNSUCCESSFUL) { | ||
| handleDirectApiResult(recognitionSuccessType); | ||
| } else { | ||
| handleDirectApiError("Could not extract the information from the front side and back side is empty!", promise); | ||
| } | ||
| } catch (Exception e) { | ||
| throw new RuntimeException(e); | ||
| } | ||
| } catch (Exception e) { | ||
| throw new RuntimeException(e); | ||
| } else if (mFirstSideScanned == false && recognitionSuccessType != RecognitionSuccessType.UNSUCCESSFUL){ | ||
| //singleside recognizer used | ||
| handleDirectApiResult(recognitionSuccessType); | ||
| } else { | ||
| mFirstSideScanned = false; | ||
| handleDirectApiError("Could not extract the information with DirectAPI!", promise); | ||
| } | ||
| } else if (mFirstSideScanned == false && recognitionSuccessType != RecognitionSuccessType.UNSUCCESSFUL){ | ||
| //singleside recognizer used | ||
| handleDirectApiResult(recognitionSuccessType); | ||
| } else { | ||
| mFirstSideScanned = false; | ||
| handleDirectApiError("Could not extract the information with DirectAPI!", promise); | ||
| } | ||
| } | ||
| @Override | ||
| public void onUnrecoverableError(@NonNull Throwable throwable) { | ||
| promise.reject(throwable); | ||
| } | ||
| }; | ||
| @Override | ||
| public void onUnrecoverableError(@NonNull Throwable throwable) { | ||
| promise.reject(throwable); | ||
| } | ||
| }; | ||
| setupRecognizerRunner(jsonRecognizerCollection, mFirstSideRecognitionCallback, promise); | ||
| setupRecognizerRunner(jsonRecognizerCollection, mFirstSideRecognitionCallback, promise); | ||
| if (frontImage != null) { | ||
| processImage(frontImage.getString(PARAM_FRONT_IMAGE), mScanResultListenerFrontSide); | ||
| } else { | ||
| handleDirectApiError("The provided image for the 'frontImage' parameter is empty!", promise); | ||
| if (frontImage != null) { | ||
| processImage(frontImage.getString(PARAM_FRONT_IMAGE), mScanResultListenerFrontSide); | ||
| } else { | ||
| handleDirectApiError("The provided image for the 'frontImage' parameter is empty!", promise); | ||
| } | ||
| } | ||
| } | ||
| private void prepareScanning(ReadableMap license, Promise promise) { | ||
| private boolean prepareScanning(ReadableMap license, Promise promise) { | ||
| Activity currentActivity = getCurrentActivity(); | ||
| if (currentActivity == null) { | ||
| promise.reject(ERROR_ACTIVITY_DOES_NOT_EXIST, "Activity does not exist"); | ||
| return; | ||
| return false; | ||
| } | ||
@@ -167,3 +169,3 @@ | ||
| promise.reject(ERROR_LICENSE_KEY_NOT_SET, "License key is not set"); | ||
| return; | ||
| return false; | ||
| } | ||
@@ -179,3 +181,4 @@ String licenseKey = license.getString(PARAM_LICENSE_KEY); | ||
| } | ||
| setLicense(licenseKey, licensee, showTrialLicenseKeyWarning); | ||
| return setLicense(licenseKey, licensee, showTrialLicenseKeyWarning); | ||
| } | ||
@@ -241,3 +244,3 @@ | ||
| private void setLicense( String licenseKey, String licensee, Boolean showTrialLicenseKeyWarning ) { | ||
| private boolean setLicense( String licenseKey, String licensee, Boolean showTrialLicenseKeyWarning ) { | ||
| if (showTrialLicenseKeyWarning != null) { | ||
@@ -247,7 +250,18 @@ MicroblinkSDK.setShowTrialLicenseWarning(showTrialLicenseKeyWarning); | ||
| if (licensee != null) { | ||
| MicroblinkSDK.setLicenseKey(licenseKey, licensee, this.getCurrentActivity()); | ||
| try { | ||
| MicroblinkSDK.setLicenseKey(licenseKey, licensee, this.getCurrentActivity()); | ||
| } catch (LicenceKeyException licenceKeyException) { | ||
| mScanPromise.reject("Android license key error: " + licenceKeyException.toString()); | ||
| return false; | ||
| } | ||
| } else { | ||
| MicroblinkSDK.setLicenseKey(licenseKey, this.getCurrentActivity()); | ||
| try { | ||
| MicroblinkSDK.setLicenseKey(licenseKey, this.getCurrentActivity()); | ||
| } catch (LicenceKeyException licenceKeyException) { | ||
| mScanPromise.reject("Android license key error: " + licenceKeyException.toString()); | ||
| return false; | ||
| } | ||
| } | ||
| MicroblinkSDK.setIntentDataTransferMode(IntentDataTransferMode.PERSISTED_OPTIMISED); | ||
| return true; | ||
| } | ||
@@ -254,0 +268,0 @@ |
@@ -12,3 +12,6 @@ package com.microblink.blinkid.reactnative.overlays.serialization; | ||
| import com.microblink.blinkid.locale.LanguageUtils; | ||
| import com.microblink.blinkid.hardware.camera.VideoResolutionPreset; | ||
| import com.microblink.blinkid.uisettings.CameraSettings; | ||
| import static com.microblink.blinkid.reactnative.SerializationUtils.getStringFromMap; | ||
@@ -21,4 +24,5 @@ | ||
| OverlaySerializationUtils.extractCommonUISettings(jsonUISettings, settings); | ||
| BlinkIDOverlaySerializationUtils.extractCommonBlinkIdUiSettings(jsonUISettings, settings); | ||
| Boolean requireDocumentSidesDataMatch = getBooleanFromMap(jsonUISettings, "requireDocumentSidesDataMatch"); | ||
@@ -78,2 +82,17 @@ if (requireDocumentSidesDataMatch != null) { | ||
| VideoResolutionPreset videoResolutionPreset = VideoResolutionPreset.values()[0]; | ||
| if (jsonUISettings.hasKey("androidCameraResolutionPreset")) { | ||
| videoResolutionPreset = VideoResolutionPreset.values()[jsonUISettings.getInt("androidCameraResolutionPreset")]; | ||
| } | ||
| Boolean androidLegacyCameraApi = false; | ||
| if (jsonUISettings.hasKey("enableAndroidLegacyCameraApi")) { | ||
| androidLegacyCameraApi = jsonUISettings.getBoolean("enableAndroidLegacyCameraApi"); | ||
| } | ||
| settings.setCameraSettings(new CameraSettings.Builder() | ||
| .setVideoResolutionPreset(videoResolutionPreset) | ||
| .setForceLegacyApi(androidLegacyCameraApi) | ||
| .build()); | ||
| ReticleOverlayStrings.Builder overlasStringsBuilder = new ReticleOverlayStrings.Builder(context); | ||
@@ -133,2 +152,10 @@ | ||
| } | ||
| String errorBlurDetected = getStringFromMap(jsonUISettings, "errorBlurDetected"); | ||
| if (errorBlurDetected != null) { | ||
| overlasStringsBuilder.setErrorBlurDetected(errorBlurDetected); | ||
| } | ||
| String errorGlareDetected = getStringFromMap(jsonUISettings, "errorGlareDetected"); | ||
| if (errorGlareDetected != null) { | ||
| overlasStringsBuilder.setErrorGlareDetected(errorGlareDetected); | ||
| } | ||
@@ -135,0 +162,0 @@ settings.setStrings(overlasStringsBuilder.build()); |
@@ -17,5 +17,2 @@ package com.microblink.blinkid.reactnative.recognizers.serialization; | ||
| } | ||
| if (jsonMap.hasKey("allowBlurFilter")) { | ||
| recognizer.setAllowBlurFilter(jsonMap.getBoolean("allowBlurFilter")); | ||
| } | ||
| if (jsonMap.hasKey("allowUncertainFrontSideScan")) { | ||
@@ -33,2 +30,14 @@ recognizer.setAllowUncertainFrontSideScan(jsonMap.getBoolean("allowUncertainFrontSideScan")); | ||
| } | ||
| if (jsonMap.hasKey("blurStrictnessLevel")) { | ||
| recognizer.setBlurStrictnessLevel(com.microblink.blinkid.entities.recognizers.blinkid.generic.imageanalysis.StrictnessLevel.values()[jsonMap.getInt("blurStrictnessLevel")]); | ||
| } | ||
| if (jsonMap.hasKey("customClassRules")) { | ||
| recognizer.setCustomClassRules(BlinkIDSerializationUtils.deserializeCustomClassRules(jsonMap.getArray("customClassRules"))); | ||
| } | ||
| if (jsonMap.hasKey("enableBlurFilter")) { | ||
| recognizer.setEnableBlurFilter(jsonMap.getBoolean("enableBlurFilter")); | ||
| } | ||
| if (jsonMap.hasKey("enableGlareFilter")) { | ||
| recognizer.setEnableGlareFilter(jsonMap.getBoolean("enableGlareFilter")); | ||
| } | ||
| if (jsonMap.hasKey("faceImageDpi")) { | ||
@@ -43,2 +52,5 @@ recognizer.setFaceImageDpi(jsonMap.getInt("faceImageDpi")); | ||
| } | ||
| if (jsonMap.hasKey("glareStrictnessLevel")) { | ||
| recognizer.setGlareStrictnessLevel(com.microblink.blinkid.entities.recognizers.blinkid.generic.imageanalysis.StrictnessLevel.values()[jsonMap.getInt("glareStrictnessLevel")]); | ||
| } | ||
| if (jsonMap.hasKey("maxAllowedMismatchesPerField")) { | ||
@@ -107,2 +119,3 @@ recognizer.setMaxAllowedMismatchesPerField(jsonMap.getInt("maxAllowedMismatchesPerField")); | ||
| jsonResult.putMap("documentOptionalAdditionalNumber", BlinkIDSerializationUtils.serializeStringResult(result.getDocumentOptionalAdditionalNumber())); | ||
| jsonResult.putMap("documentSubtype", BlinkIDSerializationUtils.serializeStringResult(result.getDocumentSubtype())); | ||
| jsonResult.putMap("driverLicenseDetailedInfo", BlinkIDSerializationUtils.serializeDriverLicenseDetailedInfo(result.getDriverLicenseDetailedInfo())); | ||
@@ -138,2 +151,4 @@ jsonResult.putMap("employer", BlinkIDSerializationUtils.serializeStringResult(result.getEmployer())); | ||
| jsonResult.putMap("religion", BlinkIDSerializationUtils.serializeStringResult(result.getReligion())); | ||
| jsonResult.putMap("remarks", BlinkIDSerializationUtils.serializeStringResult(result.getRemarks())); | ||
| jsonResult.putMap("residencePermitType", BlinkIDSerializationUtils.serializeStringResult(result.getResidencePermitType())); | ||
| jsonResult.putMap("residentialStatus", BlinkIDSerializationUtils.serializeStringResult(result.getResidentialStatus())); | ||
@@ -144,2 +159,3 @@ jsonResult.putBoolean("scanningFirstSideDone", result.isScanningFirstSideDone()); | ||
| jsonResult.putMap("sponsor", BlinkIDSerializationUtils.serializeStringResult(result.getSponsor())); | ||
| jsonResult.putMap("visaType", BlinkIDSerializationUtils.serializeStringResult(result.getVisaType())); | ||
| return jsonResult; | ||
@@ -146,0 +162,0 @@ } |
@@ -37,5 +37,5 @@ package com.microblink.blinkid.reactnative.recognizers.serialization; | ||
| import com.microblink.blinkid.entities.recognizers.blinkid.generic.DocumentNumberAnonymizationSettings; | ||
| import com.microblink.blinkid.entities.recognizers.blinkid.generic.CustomClassRules; | ||
| import com.microblink.blinkid.entities.recognizers.blinkid.generic.DetailedFieldType; | ||
| public abstract class BlinkIDSerializationUtils { | ||
@@ -206,3 +206,2 @@ public static WritableMap serializeMrzResult(MrzResult mrzResult) { | ||
| WritableMap jsonImageAnalysis = new WritableNativeMap(); | ||
| jsonImageAnalysis.putBoolean("blurred", imageAnalysisResult.isBlurred()); | ||
| jsonImageAnalysis.putInt("documentImageColorStatus", SerializationUtils.serializeEnum(imageAnalysisResult.getDocumentImageColorStatus())); | ||
@@ -216,2 +215,4 @@ jsonImageAnalysis.putInt("documentImageMoireStatus", SerializationUtils.serializeEnum(imageAnalysisResult.getDocumentImageMoireStatus())); | ||
| jsonImageAnalysis.putInt("realIdDetectionStatus", SerializationUtils.serializeEnum(imageAnalysisResult.getRealIdDetectionStatus())); | ||
| jsonImageAnalysis.putBoolean("blurDetected", imageAnalysisResult.isBlurDetected()); | ||
| jsonImageAnalysis.putBoolean("glareDetected", imageAnalysisResult.isGlareDetected()); | ||
| return jsonImageAnalysis; | ||
@@ -385,2 +386,51 @@ } | ||
| } | ||
| public static CustomClassRules[] deserializeCustomClassRules(ReadableArray jsonArray) { | ||
| if (jsonArray != null && jsonArray.size() > 0) { | ||
| CustomClassRules[] customClassRulesArray = new CustomClassRules[jsonArray.size()]; | ||
| for (int i = 0; i < jsonArray.size(); i++) { | ||
| DetailedFieldType[] detailedFieldTypes = new DetailedFieldType[0]; | ||
| Country country = Country.NONE; | ||
| Region region = Region.NONE; | ||
| Type type = Type.NONE; | ||
| try { | ||
| ReadableMap jsonCustomClassRulesArray = jsonArray.getMap(i); | ||
| ReadableArray detailedFieldTypeJsonArray = jsonCustomClassRulesArray.getArray("detailedFieldTypes"); | ||
| detailedFieldTypes = new DetailedFieldType[detailedFieldTypeJsonArray.size()]; | ||
| for (int x = 0; x < detailedFieldTypeJsonArray.size(); x++) { | ||
| FieldType fieldType = FieldType.values()[detailedFieldTypeJsonArray.getMap(x).getInt("fieldType")]; | ||
| AlphabetType alphabetType = AlphabetType.values()[detailedFieldTypeJsonArray.getMap(x).getInt("alphabetType")]; | ||
| detailedFieldTypes[x] = new DetailedFieldType(fieldType, alphabetType); | ||
| } | ||
| try { | ||
| country = Country.values()[jsonCustomClassRulesArray.getInt("country")]; | ||
| } catch (Exception e) { | ||
| country = null; | ||
| } | ||
| try { | ||
| region = Region.values()[jsonCustomClassRulesArray.getInt("region")]; | ||
| } catch (Exception e) { | ||
| region = null; | ||
| } | ||
| try { | ||
| type = Type.values()[jsonCustomClassRulesArray.getInt("type")]; | ||
| } catch (Exception e) { | ||
| type = null; | ||
| } | ||
| CustomClassRules customClassRules = new CustomClassRules(country, region, type, detailedFieldTypes); | ||
| customClassRulesArray[i] = customClassRules; | ||
| } catch (Exception e) { | ||
| throw new RuntimeException(e); | ||
| } | ||
| } | ||
| return customClassRulesArray; | ||
| } else { | ||
| return new CustomClassRules[]{}; | ||
| } | ||
| } | ||
| } |
@@ -17,5 +17,2 @@ package com.microblink.blinkid.reactnative.recognizers.serialization; | ||
| } | ||
| if (jsonMap.hasKey("allowBlurFilter")) { | ||
| recognizer.setAllowBlurFilter(jsonMap.getBoolean("allowBlurFilter")); | ||
| } | ||
| if (jsonMap.hasKey("allowUnparsedMrzResults")) { | ||
@@ -30,2 +27,14 @@ recognizer.setAllowUnparsedMrzResults(jsonMap.getBoolean("allowUnparsedMrzResults")); | ||
| } | ||
| if (jsonMap.hasKey("blurStrictnessLevel")) { | ||
| recognizer.setBlurStrictnessLevel(com.microblink.blinkid.entities.recognizers.blinkid.generic.imageanalysis.StrictnessLevel.values()[jsonMap.getInt("blurStrictnessLevel")]); | ||
| } | ||
| if (jsonMap.hasKey("customClassRules")) { | ||
| recognizer.setCustomClassRules(BlinkIDSerializationUtils.deserializeCustomClassRules(jsonMap.getArray("customClassRules"))); | ||
| } | ||
| if (jsonMap.hasKey("enableBlurFilter")) { | ||
| recognizer.setEnableBlurFilter(jsonMap.getBoolean("enableBlurFilter")); | ||
| } | ||
| if (jsonMap.hasKey("enableGlareFilter")) { | ||
| recognizer.setEnableGlareFilter(jsonMap.getBoolean("enableGlareFilter")); | ||
| } | ||
| if (jsonMap.hasKey("faceImageDpi")) { | ||
@@ -40,2 +49,5 @@ recognizer.setFaceImageDpi(jsonMap.getInt("faceImageDpi")); | ||
| } | ||
| if (jsonMap.hasKey("glareStrictnessLevel")) { | ||
| recognizer.setGlareStrictnessLevel(com.microblink.blinkid.entities.recognizers.blinkid.generic.imageanalysis.StrictnessLevel.values()[jsonMap.getInt("glareStrictnessLevel")]); | ||
| } | ||
| if (jsonMap.hasKey("paddingEdge")) { | ||
@@ -94,2 +106,3 @@ recognizer.setPaddingEdge((float)jsonMap.getDouble("paddingEdge")); | ||
| jsonResult.putMap("documentOptionalAdditionalNumber", BlinkIDSerializationUtils.serializeStringResult(result.getDocumentOptionalAdditionalNumber())); | ||
| jsonResult.putMap("documentSubtype", BlinkIDSerializationUtils.serializeStringResult(result.getDocumentSubtype())); | ||
| jsonResult.putMap("driverLicenseDetailedInfo", BlinkIDSerializationUtils.serializeDriverLicenseDetailedInfo(result.getDriverLicenseDetailedInfo())); | ||
@@ -120,2 +133,4 @@ jsonResult.putMap("employer", BlinkIDSerializationUtils.serializeStringResult(result.getEmployer())); | ||
| jsonResult.putMap("religion", BlinkIDSerializationUtils.serializeStringResult(result.getReligion())); | ||
| jsonResult.putMap("remarks", BlinkIDSerializationUtils.serializeStringResult(result.getRemarks())); | ||
| jsonResult.putMap("residencePermitType", BlinkIDSerializationUtils.serializeStringResult(result.getResidencePermitType())); | ||
| jsonResult.putMap("residentialStatus", BlinkIDSerializationUtils.serializeStringResult(result.getResidentialStatus())); | ||
@@ -125,2 +140,3 @@ jsonResult.putMap("sex", BlinkIDSerializationUtils.serializeStringResult(result.getSex())); | ||
| jsonResult.putMap("sponsor", BlinkIDSerializationUtils.serializeStringResult(result.getSponsor())); | ||
| jsonResult.putMap("visaType", BlinkIDSerializationUtils.serializeStringResult(result.getVisaType())); | ||
| jsonResult.putMap("vizResult", BlinkIDSerializationUtils.serializeVizResult(result.getVizResult())); | ||
@@ -127,0 +143,0 @@ return jsonResult; |
@@ -34,3 +34,5 @@ #import "MBOverlayViewControllerDelegate.h" | ||
| @property (class, nonatomic, readonly) NSString *STATUS_NO_DATA; | ||
| @property (class, nonatomic, readonly) NSString *STATUS_INVALID_LICENSE_KEY; | ||
| @property (nonatomic, strong) RCTPromiseResolveBlock promiseResolve; | ||
@@ -81,16 +83,17 @@ @property (nonatomic, strong) RCTPromiseRejectBlock promiseReject; | ||
| [self setupLicense:jsonLicense]; | ||
| [self setupLanguage:jsonOverlaySettings]; | ||
| if([self setupLicense:jsonLicense]) { | ||
| [self setupLanguage:jsonOverlaySettings]; | ||
| self.recognizerCollection = [[MBRecognizerSerializers sharedInstance] deserializeRecognizerCollection:jsonRecognizerCollection]; | ||
| self.recognizerCollection = [[MBRecognizerSerializers sharedInstance] deserializeRecognizerCollection:jsonRecognizerCollection]; | ||
| dispatch_sync(dispatch_get_main_queue(), ^{ | ||
| MBOverlayViewController *overlayVC = [[MBOverlaySettingsSerializers sharedInstance] createOverlayViewController:jsonOverlaySettings recognizerCollection:self.recognizerCollection delegate:self]; | ||
| dispatch_sync(dispatch_get_main_queue(), ^{ | ||
| MBOverlayViewController *overlayVC = [[MBOverlaySettingsSerializers sharedInstance] createOverlayViewController:jsonOverlaySettings recognizerCollection:self.recognizerCollection delegate:self]; | ||
| UIViewController<MBRecognizerRunnerViewController>* recognizerRunnerViewController = [MBViewControllerFactory recognizerRunnerViewControllerWithOverlayViewController:overlayVC]; | ||
| self.scanningViewController = recognizerRunnerViewController; | ||
| UIViewController<MBRecognizerRunnerViewController>* recognizerRunnerViewController = [MBViewControllerFactory recognizerRunnerViewControllerWithOverlayViewController:overlayVC]; | ||
| self.scanningViewController = recognizerRunnerViewController; | ||
| UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController]; | ||
| [rootViewController presentViewController:self.scanningViewController animated:YES completion:nil]; | ||
| }); | ||
| UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController]; | ||
| [rootViewController presentViewController:self.scanningViewController animated:YES completion:nil]; | ||
| }); | ||
| } | ||
| } | ||
@@ -108,15 +111,14 @@ | ||
| [self setupLicense:jsonLicense]; | ||
| [self setupRecognizerRunner:jsonRecognizerCollection]; | ||
| [self setupRecognizerRunner:jsonRecognizerCollection]; | ||
| if (jsonFrontImage[@"frontImage"] != nil) { | ||
| UIImage *frontImage = [self convertbase64ToImage:jsonFrontImage[@"frontImage"]]; | ||
| if (!CGSizeEqualToSize(frontImage.size, CGSizeZero)) { | ||
| [self processImage:frontImage]; | ||
| if( [self setupLicense:jsonLicense]) { | ||
| [self setupRecognizerRunner:jsonRecognizerCollection]; | ||
| if (jsonFrontImage[@"frontImage"] != nil) { | ||
| UIImage *frontImage = [self convertbase64ToImage:jsonFrontImage[@"frontImage"]]; | ||
| if (!CGSizeEqualToSize(frontImage.size, CGSizeZero)) { | ||
| [self processImage:frontImage]; | ||
| } else { | ||
| [self handleDirectApiError:MBBlinkIDModule.STATUS_BASE64_ERROR errorMessaege:@"Could not decode Base64 image!"]; | ||
| } | ||
| } else { | ||
| [self handleDirectApiError:MBBlinkIDModule.STATUS_BASE64_ERROR errorMessaege:@"Could not decode Base64 image!"]; | ||
| [self handleDirectApiError:MBBlinkIDModule.STATUS_FRONTSIDE_EMPTY errorMessaege:@"The provided image for the 'frontImage' parameter is empty!"]; | ||
| } | ||
| } else { | ||
| [self handleDirectApiError:MBBlinkIDModule.STATUS_FRONTSIDE_EMPTY errorMessaege:@"The provided image for the 'frontImage' parameter is empty!"]; | ||
| } | ||
@@ -254,3 +256,4 @@ } | ||
| - (void) setupLicense:(NSDictionary *)jsonLicense { | ||
| - (BOOL) setupLicense:(NSDictionary *)jsonLicense { | ||
| __block BOOL isLicenseKeyValid = YES; | ||
| if ([jsonLicense objectForKey:@"showTrialLicenseWarning"] != nil) { | ||
@@ -265,2 +268,7 @@ BOOL showTrialLicenseWarning = [[jsonLicense objectForKey:@"showTrialLicenseWarning"] boolValue]; | ||
| [[MBMicroblinkSDK sharedInstance] setLicenseKey:iosLicense andLicensee:licensee errorCallback:^(MBLicenseError licenseError) { | ||
| NSError *error = [NSError errorWithDomain:MBErrorDomain | ||
| code:-58 | ||
| userInfo:nil]; | ||
| self.promiseReject(MBBlinkIDModule.STATUS_INVALID_LICENSE_KEY, [self licenseErrorToString:licenseError], error); | ||
| isLicenseKeyValid = NO; | ||
| }]; | ||
@@ -270,4 +278,10 @@ } | ||
| [[MBMicroblinkSDK sharedInstance] setLicenseKey:iosLicense errorCallback:^(MBLicenseError licenseError) { | ||
| NSError *error = [NSError errorWithDomain:MBErrorDomain | ||
| code:-58 | ||
| userInfo:nil]; | ||
| self.promiseReject(MBBlinkIDModule.STATUS_INVALID_LICENSE_KEY, [self licenseErrorToString:licenseError], error); | ||
| isLicenseKeyValid = NO; | ||
| }]; | ||
| } | ||
| return isLicenseKeyValid; | ||
| } | ||
@@ -285,2 +299,34 @@ | ||
| - (NSString *)licenseErrorToString:(MBLicenseError)licenseError { | ||
| switch(licenseError) { | ||
| case MBLicenseErrorNetworkRequired: | ||
| return @"License error network required"; | ||
| break; | ||
| case MBLicenseErrorUnableToDoRemoteLicenceCheck: | ||
| return @"License error unable to do remote licence check"; | ||
| break; | ||
| case MBLicenseErrorLicenseIsLocked: | ||
| return @"License error license is locked"; | ||
| break; | ||
| case MBLicenseErrorLicenseCheckFailed: | ||
| return @"License error license check failed"; | ||
| break; | ||
| case MBLicenseErrorInvalidLicense: | ||
| return @"License error invalid license"; | ||
| break; | ||
| case MBLicenseErrorPermissionExpired: | ||
| return @"License error permission expired"; | ||
| break; | ||
| case MBLicenseErrorPayloadCorrupted: | ||
| return @"License error payload corrupted"; | ||
| break; | ||
| case MBLicenseErrorPayloadSignatureVerificationFailed: | ||
| return @"License error payload signature verification failed"; | ||
| break; | ||
| case MBLicenseErrorIncorrectTokenState: | ||
| return @"License error incorrect token state"; | ||
| break; | ||
| } | ||
| } | ||
| + (NSString *)STATUS_FRONTSIDE_EMPTY { | ||
@@ -302,2 +348,6 @@ return @"STATUS_FRONTSIDE_EMPTY"; | ||
| + (NSString *)STATUS_INVALID_LICENSE_KEY { | ||
| return @"STATUS_INVALID_LICENSE_KEY"; | ||
| } | ||
| @end |
@@ -33,2 +33,3 @@ // | ||
| +(NSDictionary * _Nonnull) serializeNSDate:(NSDate * _Nullable) value; | ||
| +(MBCustomClassRules * _Nonnull) deserializeMBCustomClassRules:(NSDictionary * _Nullable)jsonCustomClassRules; | ||
| @end |
@@ -211,3 +211,2 @@ // | ||
| return @{ | ||
| @"blurred" : [NSNumber numberWithBool:imageAnalysisResult.blurred], | ||
| @"documentImageColorStatus" : [NSNumber numberWithInteger:(imageAnalysisResult.documentImageColorStatus)], | ||
@@ -220,3 +219,6 @@ @"documentImageMoireStatus" : [NSNumber numberWithInteger:(imageAnalysisResult.documentImageMoireStatus)], | ||
| @"cardOrientation" : [NSNumber numberWithInteger:(imageAnalysisResult.cardOrientation)], | ||
| @"realIdDetectionStatus" : [NSNumber numberWithInteger:(imageAnalysisResult.realIDDetectionStatus)] | ||
| @"realIdDetectionStatus" : [NSNumber numberWithInteger:(imageAnalysisResult.realIDDetectionStatus)], | ||
| @"blurDetected" : [NSNumber numberWithBool:imageAnalysisResult.blurDetected], | ||
| @"glareDetected" : [NSNumber numberWithBool:imageAnalysisResult.glareDetected], | ||
| }; | ||
@@ -242,57 +244,76 @@ } | ||
| +(MBClassAnonymizationSettings *) deserializeMBClassAnonymizationSettings:(NSDictionary *)jsonClassAnonymizationSettings { | ||
| if (jsonClassAnonymizationSettings == nil) { | ||
| return [[MBClassAnonymizationSettings alloc] init]; | ||
| if (jsonClassAnonymizationSettings == nil) { | ||
| return [[MBClassAnonymizationSettings alloc] init]; | ||
| } | ||
| NSArray<NSNumber *> *fields = [jsonClassAnonymizationSettings objectForKey:@"fields"]; | ||
| NSMutableArray<NSNumber *> *newFields = [[NSMutableArray alloc] init]; | ||
| for (NSNumber *field in fields) { | ||
| [newFields addObject:field]; | ||
| } | ||
| NSDictionary *jsonDocumentNumberAnonymizationSettings = [jsonClassAnonymizationSettings valueForKey:@"documentNumberAnonymizationSettings"]; | ||
| if (jsonDocumentNumberAnonymizationSettings != nil && ![jsonDocumentNumberAnonymizationSettings isEqual:[NSNull null]]) { | ||
| MBDocumentNumberAnonymizationSettings *documentNumberAnonymizationSettings = [[MBDocumentNumberAnonymizationSettings alloc] initWithPrefixDigitsVisible:[[jsonDocumentNumberAnonymizationSettings valueForKey:@"prefixDigitsVisible"] integerValue] suffixDigitsVisible:[[jsonDocumentNumberAnonymizationSettings valueForKey:@"suffixDigitsVisible"] integerValue]]; | ||
| if ([jsonClassAnonymizationSettings valueForKey:@"country"] != nil|| | ||
| [jsonClassAnonymizationSettings valueForKey:@"region"] != nil || | ||
| [jsonClassAnonymizationSettings valueForKey:@"type"] != nil) { | ||
| MBClassFilter *classInfoFilter = [self deserializeClassInfoFilter:jsonClassAnonymizationSettings]; | ||
| return [[MBClassAnonymizationSettings alloc] initWithClassFilter:classInfoFilter documentNumberAnonymizationSettings:documentNumberAnonymizationSettings fields:newFields]; | ||
| } else { | ||
| return [[MBClassAnonymizationSettings alloc] initWithFields:newFields documentNumberAnonymizationSettings:documentNumberAnonymizationSettings]; | ||
| } | ||
| } else { | ||
| NSArray<NSNumber *> *fields = [jsonClassAnonymizationSettings objectForKey:@"fields"]; | ||
| NSMutableArray<NSNumber *> *newFields = [[NSMutableArray alloc] init]; | ||
| return [[MBClassAnonymizationSettings alloc] initWithFields:newFields documentNumberAnonymizationSettings:nil]; | ||
| } | ||
| } | ||
| for (NSNumber *field in fields) { | ||
| [newFields addObject:field]; | ||
| +(MBCustomClassRules *) deserializeMBCustomClassRules:(NSDictionary *)jsonCustomClassRules { | ||
| if (jsonCustomClassRules == nil) { | ||
| return [[MBCustomClassRules alloc] initWithClassFilter:nil fields:nil]; | ||
| } else { | ||
| NSArray<NSNumber *> *detailedFieldTypes = [jsonCustomClassRules objectForKey:@"detailedFieldTypes"]; | ||
| NSMutableArray<MBDetailedFieldType *> *newDetailedFieldTypes = [[NSMutableArray alloc] init]; | ||
| for (NSNumber *detailedfield in detailedFieldTypes) { | ||
| NSNumber *fieldType = [detailedfield valueForKey:@"fieldType"]; | ||
| NSNumber *alphabetType = [detailedfield valueForKey:@"alphabetType"]; | ||
| MBDetailedFieldType *detailedFieldType = [[MBDetailedFieldType alloc] initWithFieldType:[fieldType integerValue] alphabetType: [alphabetType integerValue]]; | ||
| [newDetailedFieldTypes addObject:detailedFieldType]; | ||
| } | ||
| NSNumber *country = [jsonClassAnonymizationSettings valueForKey:@"country"]; | ||
| NSNumber *region = [jsonClassAnonymizationSettings valueForKey:@"region"]; | ||
| NSNumber *type = [jsonClassAnonymizationSettings valueForKey:@"type"]; | ||
| NSDictionary *jsonDocumentNumberAnonymizationSettings = [jsonClassAnonymizationSettings valueForKey:@"documentNumberAnonymizationSettings"]; | ||
| if (![jsonDocumentNumberAnonymizationSettings isEqual:[NSNull null]] && jsonDocumentNumberAnonymizationSettings != nil) { | ||
| MBDocumentNumberAnonymizationSettings *documentNumberAnonymizationSettings = [[MBDocumentNumberAnonymizationSettings alloc] initWithPrefixDigitsVisible:[[jsonDocumentNumberAnonymizationSettings valueForKey:@"prefixDigitsVisible"] integerValue] suffixDigitsVisible:[[jsonDocumentNumberAnonymizationSettings valueForKey:@"suffixDigitsVisible"] integerValue]]; | ||
| if (![country isEqual:[NSNull null]] && country.integerValue != nil && ![region isEqual:[NSNull null]] && region.integerValue != nil && ![type isEqual:[NSNull null]] && type.integerValue != nil) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithCountry:country.integerValue region:region.integerValue type:type.integerValue fields:fields documentNumberAnonymizationSettings:documentNumberAnonymizationSettings]; | ||
| } else if (![country isEqual:[NSNull null]] && country.integerValue != nil && ![type isEqual:[NSNull null]] && type.integerValue != nil){ | ||
| return [[MBClassAnonymizationSettings alloc] initWithCountry:country.integerValue type:type.integerValue fields:fields documentNumberAnonymizationSettings:documentNumberAnonymizationSettings]; | ||
| } else if (![country isEqual:[NSNull null]] && country.integerValue != nil && ![region isEqual:[NSNull null]] && region.integerValue != nil ) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithCountry:country.integerValue region:region.integerValue fields:fields documentNumberAnonymizationSettings:documentNumberAnonymizationSettings]; | ||
| } else if (![region isEqual:[NSNull null]] && region.integerValue != nil && ![type isEqual:[NSNull null]] && type.integerValue != nil ) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithRegion:region.integerValue type:type.integerValue fields:fields documentNumberAnonymizationSettings:documentNumberAnonymizationSettings]; | ||
| } else if (![country isEqual:[NSNull null]] && country.integerValue != nil ) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithCountry:country.integerValue fields:fields documentNumberAnonymizationSettings:documentNumberAnonymizationSettings]; | ||
| } else if (![region isEqual:[NSNull null]] && region.integerValue != nil) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithRegion:region.integerValue fields:fields documentNumberAnonymizationSettings:documentNumberAnonymizationSettings]; | ||
| } else if (![type isEqual:[NSNull null]] && type.integerValue != nil ) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithType:type.integerValue fields:fields documentNumberAnonymizationSettings:documentNumberAnonymizationSettings]; | ||
| } | ||
| return [[MBClassAnonymizationSettings alloc] initWithFields:fields documentNumberAnonymizationSettings:documentNumberAnonymizationSettings]; | ||
| } else { | ||
| if (![country isEqual:[NSNull null]] && country.integerValue != nil && ![region isEqual:[NSNull null]] && region.integerValue != nil && ![type isEqual:[NSNull null]] && type.integerValue != nil) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithCountry:country.integerValue region:region.integerValue type:type.integerValue fields:fields]; | ||
| } else if (![country isEqual:[NSNull null]] && country.integerValue != nil && ![type isEqual:[NSNull null]] && type.integerValue != nil){ | ||
| return [[MBClassAnonymizationSettings alloc] initWithCountry:country.integerValue type:type.integerValue fields:fields]; | ||
| } else if (![country isEqual:[NSNull null]] && country.integerValue != nil && ![region isEqual:[NSNull null]] && region.integerValue != nil ) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithCountry:country.integerValue region:region.integerValue fields:fields]; | ||
| } else if (![region isEqual:[NSNull null]] && region.integerValue != nil && ![type isEqual:[NSNull null]] && type.integerValue != nil ) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithRegion:region.integerValue type:type.integerValue fields:fields]; | ||
| } else if (![country isEqual:[NSNull null]] && country.integerValue != nil ) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithCountry:country.integerValue fields:fields]; | ||
| } else if (![region isEqual:[NSNull null]] && region.integerValue != nil) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithRegion:region.integerValue fields:fields]; | ||
| } else if (![type isEqual:[NSNull null]] && type.integerValue != nil ) { | ||
| return [[MBClassAnonymizationSettings alloc] initWithType:type.integerValue fields:fields]; | ||
| } | ||
| } | ||
| return [[MBClassAnonymizationSettings alloc] initWithFields:fields]; | ||
| MBClassFilter *classFilter = [self deserializeClassInfoFilter:jsonCustomClassRules]; | ||
| return [[MBCustomClassRules alloc] initWithClassFilter:classFilter fields:newDetailedFieldTypes]; | ||
| } | ||
| } | ||
| +(MBClassFilter *)deserializeClassInfoFilter:(NSDictionary *)jsonClassInfoFilter { | ||
| if (jsonClassInfoFilter == nil) { | ||
| return [[MBClassFilter alloc] init]; | ||
| } | ||
| NSNumber *country = [jsonClassInfoFilter valueForKey:@"country"]; | ||
| NSNumber *region = [jsonClassInfoFilter valueForKey:@"region"]; | ||
| NSNumber *type = [jsonClassInfoFilter valueForKey:@"type"]; | ||
| MBClassFilterBuilder *classFilterBuilder = [[MBClassFilterBuilder alloc] init]; | ||
| if (![country isEqual:[NSNull null]] && country.integerValue != nil ) { | ||
| [classFilterBuilder withCountry:country.integerValue]; | ||
| } | ||
| if (![region isEqual:[NSNull null]] && region.integerValue != nil ) { | ||
| [classFilterBuilder withRegion:region.integerValue]; | ||
| } | ||
| if (![type isEqual:[NSNull null]] && type.integerValue != nil ) { | ||
| [classFilterBuilder withType:type.integerValue]; | ||
| } | ||
| return [classFilterBuilder build]; | ||
| } | ||
| +(NSDictionary * _Nonnull) serializeBarcodeElements:(MBBarcodeElements * _Nonnull)extendedElements { | ||
@@ -299,0 +320,0 @@ return @{ |
@@ -216,2 +216,23 @@ // | ||
| } | ||
| { | ||
| id iOSCameraResolutionPreset = [jsonOverlaySettings valueForKey: @"iosCameraResolutionPreset"]; | ||
| if (iOSCameraResolutionPreset != nil) { | ||
| sett.cameraSettings.cameraPreset = [iOSCameraResolutionPreset integerValue]; | ||
| } | ||
| } | ||
| { | ||
| id errorBlurDetected = [jsonOverlaySettings valueForKey:@"errorBlurDetected"]; | ||
| if (errorBlurDetected != nil) { | ||
| sett.blurDetectedMessage = (NSString *)errorBlurDetected; | ||
| } | ||
| } | ||
| { | ||
| id errorGlareDetected = [jsonOverlaySettings valueForKey:@"errorGlareDetected"]; | ||
| if (errorGlareDetected != nil) { | ||
| sett.glareDetectedMessage = (NSString *)errorGlareDetected; | ||
| } | ||
| } | ||
@@ -218,0 +239,0 @@ return [[MBBlinkIdOverlayViewController alloc] initWithSettings:sett recognizerCollection:recognizerCollection delegate:self]; |
@@ -31,8 +31,2 @@ #import "MBBlinkIdMultiSideRecognizerWrapper.h" | ||
| { | ||
| id allowBlurFilter = [jsonRecognizer valueForKey:@"allowBlurFilter"]; | ||
| if (allowBlurFilter != nil) { | ||
| recognizer.allowBlurFilter = [(NSNumber *)allowBlurFilter boolValue]; | ||
| } | ||
| } | ||
| { | ||
| id allowUncertainFrontSideScan = [jsonRecognizer valueForKey:@"allowUncertainFrontSideScan"]; | ||
@@ -62,2 +56,30 @@ if (allowUncertainFrontSideScan != nil) { | ||
| { | ||
| id blurStrictnessLevel = [jsonRecognizer valueForKey:@"blurStrictnessLevel"]; | ||
| if (blurStrictnessLevel != nil) { | ||
| recognizer.blurStrictnessLevel = (MBStrictnessLevel)[(NSNumber *)blurStrictnessLevel unsignedIntegerValue]; | ||
| } | ||
| } | ||
| { | ||
| id customClassRules = [jsonRecognizer valueForKey:@"customClassRules"]; | ||
| if (customClassRules != nil) { | ||
| NSArray<NSDictionary *> *ruleClasses = customClassRules; | ||
| for (NSDictionary *class in ruleClasses) { | ||
| MBCustomClassRules *rule = [MBBlinkIDSerializationUtils deserializeMBCustomClassRules:(NSDictionary*)class]; | ||
| [recognizer recognizerAddClassRulesToCustomClassRules:rule]; | ||
| } | ||
| } | ||
| } | ||
| { | ||
| id enableBlurFilter = [jsonRecognizer valueForKey:@"enableBlurFilter"]; | ||
| if (enableBlurFilter != nil) { | ||
| recognizer.enableBlurFilter = [(NSNumber *)enableBlurFilter boolValue]; | ||
| } | ||
| } | ||
| { | ||
| id enableGlareFilter = [jsonRecognizer valueForKey:@"enableGlareFilter"]; | ||
| if (enableGlareFilter != nil) { | ||
| recognizer.enableGlareFilter = [(NSNumber *)enableGlareFilter boolValue]; | ||
| } | ||
| } | ||
| { | ||
| id faceImageDpi = [jsonRecognizer valueForKey:@"faceImageDpi"]; | ||
@@ -81,2 +103,8 @@ if (faceImageDpi != nil) { | ||
| { | ||
| id glareStrictnessLevel = [jsonRecognizer valueForKey:@"glareStrictnessLevel"]; | ||
| if (glareStrictnessLevel != nil) { | ||
| recognizer.glareStrictnessLevel = (MBStrictnessLevel)[(NSNumber *)glareStrictnessLevel unsignedIntegerValue]; | ||
| } | ||
| } | ||
| { | ||
| id maxAllowedMismatchesPerField = [jsonRecognizer valueForKey:@"maxAllowedMismatchesPerField"]; | ||
@@ -183,2 +211,3 @@ if (maxAllowedMismatchesPerField != nil) { | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.documentOptionalAdditionalNumber] forKey:@"documentOptionalAdditionalNumber"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.documentSubtype] forKey:@"documentSubtype"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeDriverLicenseDetailedInfo:self.result.driverLicenseDetailedInfo] forKey:@"driverLicenseDetailedInfo"]; | ||
@@ -214,2 +243,4 @@ [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.employer] forKey:@"employer"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.religion] forKey:@"religion"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.remarks] forKey:@"remarks"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.residencePermitType] forKey:@"residencePermitType"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.residentialStatus] forKey:@"residentialStatus"]; | ||
@@ -220,2 +251,3 @@ [jsonResult setValue:[NSNumber numberWithBool:self.result.scanningFirstSideDone] forKey:@"scanningFirstSideDone"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.sponsor] forKey:@"sponsor"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.visaType] forKey:@"visaType"]; | ||
@@ -222,0 +254,0 @@ return jsonResult; |
@@ -31,8 +31,2 @@ #import "MBBlinkIdSingleSideRecognizerWrapper.h" | ||
| { | ||
| id allowBlurFilter = [jsonRecognizer valueForKey:@"allowBlurFilter"]; | ||
| if (allowBlurFilter != nil) { | ||
| recognizer.allowBlurFilter = [(NSNumber *)allowBlurFilter boolValue]; | ||
| } | ||
| } | ||
| { | ||
| id allowUnparsedMrzResults = [jsonRecognizer valueForKey:@"allowUnparsedMrzResults"]; | ||
@@ -56,2 +50,30 @@ if (allowUnparsedMrzResults != nil) { | ||
| { | ||
| id blurStrictnessLevel = [jsonRecognizer valueForKey:@"blurStrictnessLevel"]; | ||
| if (blurStrictnessLevel != nil) { | ||
| recognizer.blurStrictnessLevel = (MBStrictnessLevel)[(NSNumber *)blurStrictnessLevel unsignedIntegerValue]; | ||
| } | ||
| } | ||
| { | ||
| id customClassRules = [jsonRecognizer valueForKey:@"customClassRules"]; | ||
| if (customClassRules != nil) { | ||
| NSArray<NSDictionary *> *ruleClasses = customClassRules; | ||
| for (NSDictionary *class in ruleClasses) { | ||
| MBCustomClassRules *rule = [MBBlinkIDSerializationUtils deserializeMBCustomClassRules:(NSDictionary*)class]; | ||
| [recognizer recognizerAddClassRulesToCustomClassRules:rule]; | ||
| } | ||
| } | ||
| } | ||
| { | ||
| id enableBlurFilter = [jsonRecognizer valueForKey:@"enableBlurFilter"]; | ||
| if (enableBlurFilter != nil) { | ||
| recognizer.enableBlurFilter = [(NSNumber *)enableBlurFilter boolValue]; | ||
| } | ||
| } | ||
| { | ||
| id enableGlareFilter = [jsonRecognizer valueForKey:@"enableGlareFilter"]; | ||
| if (enableGlareFilter != nil) { | ||
| recognizer.enableGlareFilter = [(NSNumber *)enableGlareFilter boolValue]; | ||
| } | ||
| } | ||
| { | ||
| id faceImageDpi = [jsonRecognizer valueForKey:@"faceImageDpi"]; | ||
@@ -75,2 +97,8 @@ if (faceImageDpi != nil) { | ||
| { | ||
| id glareStrictnessLevel = [jsonRecognizer valueForKey:@"glareStrictnessLevel"]; | ||
| if (glareStrictnessLevel != nil) { | ||
| recognizer.glareStrictnessLevel = (MBStrictnessLevel)[(NSNumber *)glareStrictnessLevel unsignedIntegerValue]; | ||
| } | ||
| } | ||
| { | ||
| id paddingEdge = [jsonRecognizer valueForKey:@"paddingEdge"]; | ||
@@ -160,2 +188,3 @@ if (paddingEdge != nil) { | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.documentOptionalAdditionalNumber] forKey:@"documentOptionalAdditionalNumber"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.documentSubtype] forKey:@"documentSubtype"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeDriverLicenseDetailedInfo:self.result.driverLicenseDetailedInfo] forKey:@"driverLicenseDetailedInfo"]; | ||
@@ -186,2 +215,4 @@ [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.employer] forKey:@"employer"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.religion] forKey:@"religion"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.remarks] forKey:@"remarks"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.residencePermitType] forKey:@"residencePermitType"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.residentialStatus] forKey:@"residentialStatus"]; | ||
@@ -191,2 +222,3 @@ [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.sex] forKey:@"sex"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.sponsor] forKey:@"sponsor"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeMBStringResult:self.result.visaType] forKey:@"visaType"]; | ||
| [jsonResult setValue:[MBBlinkIDSerializationUtils serializeVizResult:self.result.vizResult] forKey:@"vizResult"]; | ||
@@ -193,0 +225,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
546817
3.79%6877
5.12%