Implementation Guide
Authentication
A unique access token should be created upon each SDK entry. In order to generate an access token, please refer to Valify's Authentication Documentation.
Security Warning: For improved security, consider implementing the access token fetching logic outside the Activity. This helps keep sensitive credentials secure and reduces potential exposure within the Activity/Fragment code.
Initialization
Declare the following variables
private VIDVOCRConfig.Builder vidvOcrBuilder;
Initialize your SDK in your activity or fragment as follows
vidvOcrBuilder = new VIDVOCRConfig.Builder();
Configurations
The SDK builder is separated into two components.
Required Configurations
vidvOcrBuilder
.setBaseUrl("Base Url"); //add your actual base URL
.setAccessToken("Access Token"); //add the fetched access token here
.setBundleKey("Bundle Key"); //add your actual bundle key
Optional Configurations
vidvOcrBuilder
.setLanguage(String) // "en" is set as default
.setDataValidation(boolean) // false is set as default
.setReturnValidationError(boolean) // false is set as default
.setReviewData(boolean) // default is true
.setPreviewCapturedImage(boolean) // default is false
.setManualCaptureMode(boolean) // default is false
.setHeaders(HashMap<String, String>()) // default is empty
.setSSLCertificate(Inputstream) // Inputstream for a certificate file, no default certificate
.setCaptureOnlyMode(boolean) // default is false
.setDocumentVerificationPlus(boolean) // default is false
.setCollectUserInfo(boolean) //enable/disable user information collection
.setAdvancedConfidence(boolean) // default is false
.setLogo(new VIDVLogo) // default is Valify's logo new VIDVLogo.Valify()
.setPrimaryColor(Color.parseColor("hexa_color")); // default is Valify’s primary color
.setCustomFont(R.font.custom_font) //Add your brand font here
Configurations Breakdown
This section shows the breakdown of all optional builder configurations.
The following line is where the user interface language is set.
.setLanguage(String) // ["ar" or "en"]
If the following line is set to true, an extra layer of validations is added to the SDK response.
.setDataValidation(boolean)
If the following line is set to true, any validation exceptions raised on extracted NID data will be returned in the ServiceFailure instance.
.setReturnValidationError(boolean)
If the following line is set to true, a screen is added to the user flow that displays the images captured and the OCR result to the user.
.setReviewData(boolean)
If the following line is set to true, the captured image will be displayed for the user.
.setPreviewCapturedImage(boolean)
If the following line is set to true, the SDK will automatically enable manual capture if it detects that the user is unable to auto capture card.
.setManualCaptureMode(boolean)
The following line is optional and can be used to set any headers that may be required for purposes specific to your application. Any headers set will be sent along with each API call made by the SDK.
.setHeaders(HashMap<>())
The following line is optional and can be used to set an SSL certificate that may be required for purposes specific to your application.
.setSSLCertificate(Inputstream)
If the following line is set to true, the SDK purely performs image capturing and only returns these images in the SDK response.
.setCaptureOnlyMode(boolean)
If the following line is set to true, an extra layer of data amd visual validations is added to the SDK response.
.setDocumentVerificationPlus(boolean)
If the following line is set to true then additional checks are made for NID fraud detection and the results are returned in the response.
.setAdvancedConfidence(boolean)
If the following line is set to true then you need to enable the location permission to your application to use collect user info option
.setCollectUserInfo(boolean)
add these lines to your app manifest
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"tools:ignore="CoarseFineLocation" />
then add request location permission before calling SDK builder and make sure the permission is granted
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
//start SDK here
} else {
requestPermissionLauncher.launch(Manifest.permission.ACCESS_FINE_LOCATION);
}
Use the following line to customize the SDK logo
.setLogo(new VIDVLogo.ByteArrayLogo(image)) //for adding byte[] image as logo
.setLogo(new VIDVLogo.ResourceLogo(R.id.logo)) //for adding resource logo as sdk logo
.setLogo(new VIDVLogo.Empty()) //for disabling sdk logo
.setLogo(new VIDVLogo.Valify()) //for default valify's sdk logo
The following line is optional and can be used to set your company's branding color to the SDK's user interface.
.setPrimaryColor(Color.parseColor("hexa_color")) // ex: ex:#62CBC9
The following line is optional and can be used to set a custom font for the SDK's user interface to match your company's branding.
// Make sure the font file is placed under res/font and referenced correctly.
.setCustomFont(R.font.custom_font) // ex: R.font.custom_font
SDK Event Logs
The following listener can be used to receive event logs from the SDK experience to be used for user behavior analysis.
vidvOcrBuilder.setLogsListener(new VIDVLogListener() {
@Override
public void onLog(VIDVEvent log) {
Log.d("VIDV-Logs",
"Key: " + log.getKey() + ", " +
"Session ID: " + log.getSessionID() + ", " +
"Date: " + log.getDate() + ", " +
"Time Stamp: " + log.getTimestamp() + ", " +
"Type: " + log.getType() + ", " +
"Screen: " + log.getScreen() + ", " +
);
}
@Override
public void onLog(VIDVError log) {
Log.d("VIDV-Error",
"Code: " + log.getCode() + ", " +
"Message: " + log.getMessage() + ", " +
"Session ID: " + log.getSessionId() + ", " +
"Date: " + log.getDate() + ", " +
"Time Stamp: " + log.getTimestamp() + ", " +
"Type: " + log.getType() + ", " +
"Screen: " + log.getScreen() + ", " +
}
});
Start The SDK
You need first an instance of SDK's listener vidvOcrListener Use the following code snippet to run the SDK
vidvOcrBuilder.start(MainActivity.this,vidvOcrListener);
Sample Integration Example
Check out our GitHub repository for a simple integration app demonstrating how to use our SDK. The repository includes step-by-step instructions and sample code to help you get started quickly.
Last updated