Migration to SDK v2.0
Introduction
This guideline provides a set of steps to migrate from Android SDK v1.0 to Android SDK v2.0 IDmission has made some major changes in SDK v2.0 and if you are actively using SDK v1.0 (older version) and planning to move to SDK v2.0, the following outlines the changes to be made during migration:
- Remove old library projects
- Update Dependencies
- Initialization Method Changes
- Update SDK API With Reference To Service ID
- 4.1 Live face check (SID-660)
- 4.2 ID Validation (SID-20)
- 4.3 ID Validation and face match (SID-10)
- 4.4 Enroll Customer with ID validation (SID-50)
- 4.5 Enroll Biometric (SID-175)
- 4.6 Customer Verification (SID-105)
- 4.7 Customer Biometric Verification (SID-185)
- 4.8 Autofill
- Update Additional features
- 5.1 Document Capture
- 5.2 Signature Capture
- 5.3 FingerPrint Capture
- 5.4 Voice Capture
- Reference Links
1. Remove old library projects
Remove all old library projects. like idm-imgproc-lib, OpenCV_4.1.1, SignCaptureLib, card.io, webrtcpeer-android
2. Update Dependencies
Update Dependencies of SDK 2.0 and remove references of old library projects from build.gradle file. For latest SDK library please check SDK 2.0 document IDentitySDK 2.0
3. Initialization Method Changes
In SDK v1.0
we have the following initialization & callback response methods. While migrating to SDK v2.0
, these would be replaced with those shown below
SDK v1.0 Initialization Method :
ImageProcessingSDK imageProcessingSDK = ImageProcessingSDK.initialize(
Activity activityContext,
String url,
String loginID,
String password,
String merchantID,
Integer productID,
String productName,
String language,
boolean enableGPS);
SDK v1.0 Initialization Response Method
@Override
public void onInitializationResultAvailable(Map resultMap, Response response){
}
Update to below SDK v2.0
initialization method
CoroutineScope(Dispatchers.Main).launch {
var response: Response
withContext(Dispatchers.IO) {
var initializeApiBaseUrl = "https://kyc.idmission.com/"
var apiBaseUrl = "https://api.idmission.com/"
var response = IdentityProofingSDK.initialize(
applicationContext, initializeApiBaseUrl, apiBaseUrl, loginID, password,
merchantID,
sdkCustomizationOptions = SDKCustomizationOptions(
language = "en"
),
enableDebug = false,
enableGPS = false
)
//SDK 2.0 Initialization call back data received under the response var
}
}
4. Update SDK API With Reference To Service ID
4.1 Live face check (SID-660)
Replace below SDK v1.0
Live face check API & its callback response
method
SDK v1.0 Detect face API
ImageProcessingSDK.detectFace(Activity activityContext, JSONObject commonConfigJson, JSONObject additionalJson);
SDK v1.0 Detect face Response Method
@Override
public void onFaceDetectionResultAvailable(Map resultMap, Response response) {
}
With below SDK v2.0
Live face check method
IdentityProofingSDK.liveFaceCheck(Activity activity, SDKCustomizationOptions sdkCustomizationOptions)
CallBack methods details
//for callback data override onActivityResult method of Activity
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (!data?.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES)
.isNullOrEmpty()
) {
processedCaptures =
data?.extras?.getParcelableArray(IdMissionCaptureLauncher
.EXTRA_PROCESSED_CAPTURES)
?.toList() as List?
}
}
}
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
4.2 ID Validation (SID-20)
Replace below SDK v1.0
call of sequence for IDValidation
SDK v1.0 IDCapture Front and ID Back API
ImageProcessingSDK.autoCapture(Activity activityContext, ImageType imagesTypes,
JSONObject idCaptureConfig, JSONObject additionalJSON, HashMap snippetNameMap)
SDK v1.0 IDCapture Response Method
@Override
public void onAutoImageCaptureResultAvailable(Map resultMap, Response response) {
}
SDK v1.0 Generic API
ImageProcessingSDK.getInstance().genericApiCall(getActivity(), serviceCallJson);
SDK v1.0 Generic API Response Method
@Override
public void genericApiCallResponse(Map resultMap, Response responses) {
}
With the below SDK v2.0
ID Validation API
IdentityProofingSDK.idValidation(
Activity activity,
AdditionalCustomerFlagData additionalDataFlag,
SDKCustomizationOptions sdkCustomizationOptions)
SDK v2.0 ID Validation API call back receive into the onActivityResult method of Activity
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (!data?.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES)
.isNullOrEmpty()
) {
processedCaptures =
data?.extras?.getParcelableArray(IdMissionCaptureLauncher
.EXTRA_PROCESSED_CAPTURES)
?.toList() as List?
}
}
}
Replace SDK v1.0 genericApiCall call method with finalSubmit
CoroutineScope(Dispatchers.Main).launch {
var response: Response
response = IdentityProofingSDK.finalSubmit(
Context applicationContext
)
}
}
//SDK 2.0 SDK finalSubmit call back data received under the response var
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
4.3 ID Validation and face match (SID-10)
Replace below SDK v1.0
call of sequence for ID Validation and face match
SDK v1.0 Detect face API
ImageProcessingSDK.detectFace(
Activity activityContext,
JSONObject commonConfigJson,
JSONObject additionalJson);
SDK v1.0 Detect face Response Method
@Override
public void onFaceDetectionResultAvailable(Map resultMap, Response response) {
}
SDK v1.0 IDCapture Front and ID Back API
ImageProcessingSDK.autoCapture(
Activity activityContext,
ImageType imagesTypes,
JSONObject idCaptureConfig,
JSONObject additionalJSON,
HashMap snippetNameMap)
SDK v1.0 IDCapture Response Method
@Override
public void onAutoImageCaptureResultAvailable(Map resultMap, Response response) {
}
SDK v1.0 Generic API
ImageProcessingSDK.getInstance().genericApiCall(getActivity(), serviceCallJson);
SDK v1.0 Generic API Response Method
@Override
public void genericApiCallResponse(Map resultMap, Response responses) {
}
With the below SDK v2.0
ID Validation and Face Match API
IdentityProofingSDK.idValidationAndMatchFace(
Activity activity,
AdditionalCustomerFlagData additionalDataFlag,
SDKCustomizationOptions sdkCustomizationOptions)
SDK v2.0 ID Validation and Face match API call back receive into the onActivityResult method of Activity
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (!data?.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES)
.isNullOrEmpty()
) {
processedCaptures =
data?.extras?.getParcelableArray(IdMissionCaptureLauncher
.EXTRA_PROCESSED_CAPTURES)
?.toList() as List?
}
}
}
Replace SDK v1.0 genericApiCall call method with finalSubmit
CoroutineScope(Dispatchers.Main).launch {
var response: Response
response = IdentityProofingSDK.finalSubmit(
Context applicationContext
)
}
}
//SDK 2.0 SDK finalSubmit call back data received under the response var
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
4.4 Enroll Customer with ID validation (SID-50)
Replace below SDK v1.0
call of sequence for Enroll Customer with ID validation
SDK v1.0 Detect face API
ImageProcessingSDK.detectFace(
Activity activityContext,
JSONObject commonConfigJson,
JSONObject additionalJson);
SDK v1.0 Detect face Response Method
@Override
public void onFaceDetectionResultAvailable(Map resultMap, Response response) {
}
SDK v1.0 IDCapture Front and ID Back API
ImageProcessingSDK.autoCapture(
Activity activityContext,
ImageType imagesTypes,
JSONObject idCaptureConfig,
JSONObject additionalJSON,
HashMap snippetNameMap)
SDK v1.0 IDCapture Response Method
@Override
public void onAutoImageCaptureResultAvailable(Map resultMap, Response response) {
}
SDK v1.0 Generic API
ImageProcessingSDK.getInstance().genericApiCall(getActivity(), serviceCallJson);
SDK v1.0 Generic API Response Method
@Override
public void genericApiCallResponse(Map resultMap, Response responses) {
}
With the below SDK v2.0
Enroll Customer with ID validation API
IdentityProofingSDK.idValidationAndcustomerEnroll(
Activity activity,
String uniqueNumber,
AdditionalCustomerFlagData additionalDataFlag,
SDKCustomizationOptions sdkCustomizationOptions
)
SDK v2.0 Enroll Customer with ID validation API call back receive into the onActivityResult method of Activity
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (!data?.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES)
.isNullOrEmpty()
) {
processedCaptures =
data?.extras?.getParcelableArray(IdMissionCaptureLauncher
.EXTRA_PROCESSED_CAPTURES)
?.toList() as List?
}
}
}
Replace SDK v1.0 genericApiCall call method with finalSubmit
CoroutineScope(Dispatchers.Main).launch {
var response: Response
response = IdentityProofingSDK.finalSubmit(
Context applicationContext
)
}
}
//SDK 2.0 SDK finalSubmit call back data received under the response var
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
4.5 Enroll Biometric (SID-175)
Replace below SDK v1.0
call of sequence for Enroll Biometric
SDK v1.0 Detect face API
ImageProcessingSDK.detectFace(
Activity activityContext,
JSONObject commonConfigJson,
JSONObject additionalJson);
SDK v1.0 Detect face Response Method
@Override
public void onFaceDetectionResultAvailable(Map resultMap, Response response) {
}
SDK v1.0 IDCapture Front and ID Back API
ImageProcessingSDK.autoCapture(
Activity activityContext,
ImageType imagesTypes,
JSONObject idCaptureConfig,
JSONObject additionalJSON,
HashMap snippetNameMap)
SDK v1.0 IDCapture Response Method
@Override
public void onAutoImageCaptureResultAvailable(Map resultMap, Response response) {
}
SDK v1.0 Generic API
ImageProcessingSDK.getInstance().genericApiCall(getActivity(), serviceCallJson);
SDK v1.0 Generic API Response Method
@Override
public void genericApiCallResponse(Map resultMap, Response responses) {
}
With the below SDK v2.0
Enroll Biometric API
IdentityProofingSDK.customerEnrollBiometrics(
Activity activity,
String uniqueNumber,
AdditionalCustomerBiometricEnrollFlagData additionalBiometricFlagData,
SDKCustomizationOptions sdkCustomizationOptions)
SDK v2.0 Enroll Biometric API call back receive into the onActivityResult method of Activity
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (!data?.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES)
.isNullOrEmpty()
) {
processedCaptures =
data?.extras?.getParcelableArray(IdMissionCaptureLauncher
.EXTRA_PROCESSED_CAPTURES)
?.toList() as List?
}
}
}
Replace SDK v1.0 genericApiCall call method with finalSubmit
CoroutineScope(Dispatchers.Main).launch {
var response: Response
response = IdentityProofingSDK.finalSubmit(
Context applicationContext
)
}
}
//SDK 2.0 SDK finalSubmit call back data received under the response var
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
4.6 Customer Verification (SID-105)
Replace below SDK v1.0
call of sequence for Customer Verification
SDK v1.0 Detect face API
ImageProcessingSDK.detectFace(
Activity activityContext,
JSONObject commonConfigJson,
JSONObject additionalJson);
SDK v1.0 Detect face Response Method
@Override
public void onFaceDetectionResultAvailable(Map resultMap, Response response) {
}
SDK v1.0 Generic API
ImageProcessingSDK.getInstance().genericApiCall(getActivity(), serviceCallJson);
SDK v1.0 Generic API Response Method
@Override
public void genericApiCallResponse(Map resultMap, Response responses) {
}
With the below SDK v2.0
Customer Verification API
IdentityProofingSDK.customerVerification(Activity activity, String uniqueNumber)
SDK v2.0 Customer Verification API call back receive into the onActivityResult method of Activity
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (!data?.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES)
.isNullOrEmpty()
) {
processedCaptures =
data?.extras?.getParcelableArray(IdMissionCaptureLauncher
.EXTRA_PROCESSED_CAPTURES)
?.toList() as List?
}
}
}
Replace SDK v1.0 genericApiCall call method with finalSubmit
CoroutineScope(Dispatchers.Main).launch {
var response: Response
response = IdentityProofingSDK.finalSubmit(
Context applicationContext
)
}
}
//SDK 2.0 SDK finalSubmit call back data received under the response var
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
4.7 Customer Biometric Verification (SID-185)
Replace below SDK v1.0
call of sequence for Customer Biometric Verification
SDK v1.0 Detect face API
ImageProcessingSDK.detectFace(
Activity activityContext,
JSONObject commonConfigJson,
JSONObject additionalJson);
SDK v1.0 Detect face Response Method
@Override
public void onFaceDetectionResultAvailable(Map resultMap, Response response) {
}
SDK v1.0 Generic API
ImageProcessingSDK.getInstance().genericApiCall(getActivity(), serviceCallJson);
SDK v1.0 Generic API Response Method
@Override
public void genericApiCallResponse(Map resultMap, Response responses) {
}
With the below SDK v2.0
Customer Biometric Verification API
IdentityProofingSDK.customerVerification(
Activity activity,
String uniqueNumber,
AdditionalCustomerBiometricFlagData additionalCustomerBiometricsData,
SDKCustomizationOptions sdkCustomizationOptions)
SDK v2.0 Customer Biometric Verification API call back receive into the onActivityResult method of Activity
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (!data?.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES)
.isNullOrEmpty()
) {
processedCaptures =
data?.extras?.getParcelableArray(IdMissionCaptureLauncher
.EXTRA_PROCESSED_CAPTURES)
?.toList() as List?
}
}
}
Replace SDK v1.0 genericApiCall call method with finalSubmit
CoroutineScope(Dispatchers.Main).launch {
var response: Response
response = IdentityProofingSDK.finalSubmit(
Context applicationContext
)
}
}
//SDK 2.0 SDK finalSubmit call back data received under the response var
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
4.8 Autofill
Replace below SDK v1.0
Autofill API call
SDK v1.0 Autofill API
ImageProcessingSDK.getInstance().autoFill(Activity activityContext, JSONObject
idCaptureConfig,JSONObject additionalJSON)
SDK v1.0 Autofill Response Method
@Override
public void onAutoFillResultAvailable(Map resultMap, Response response) {
}
With the below SDK v2.0
Autofill API
IdentityProofingSDK.autoFill(Activity activity,
AdditionalCustomerFlagData additionalDataFlag,
SDKCustomizationOptions sdkCustomizationOptions)
Result call back details:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (!data?.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES)
.isNullOrEmpty()
) {
processedCaptures =
data?.extras?.getParcelableArray(IdMissionCaptureLauncher
.EXTRA_PROCESSED_CAPTURES)
?.toList() as List?
}
}
}
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
5. Update Additional features
5.1 Document Capture
Replace below SDK v1.0
Document Capture call
SDK v1.0 Document Capture API
ImageProcessingSDK.autoCapture(
Activity activityContext,
ImageType imagesTypes,
JSONObject idCaptureConfig,
JSONObject additionalJSON,
HashMap snippetNameMap)
SDK v1.0 Document Capture Response Method
@Override
public void onCaptureGenericDocumentResultAvailable(Map resultMap, Response response) {
}
With the below SDK v2.0
Document Capture API
IdentityProofingSDK.documentCapture(
activity: Activity,
documentName: String,
documentUpload: Boolean,
additionalDataFlag: AdditionalCustomerFlagData,
sdkCustomizationOptions: SDKCustomizationOption)
//SDK 2.0 Document Capture callback method details
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
// result for document capture
if(!data.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES.isNullOrEmpty()) {
processedCaptures = data.extras?.getParcelableArray(IdMissionCaptureLauncher.EXTRA_PROCESSED_CAPTURES
}
// result for document upload
if(requestCode == CaptureConstants.OPERATION_ADDITIONAL_FEATURES_REQUEST_CODE){
// base64 image data return
var documentData = data.extras?.get(CaptureConstants.DOCUMENT_CAPTURE_DATA)
}
}
}
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
5.2 Signature Capture
Replace below SDK v1.0
Signature Capture call
SDK v1.0 Signature Capture API Call 1
ImageProcessingSDK.getInstance().captureSignature(Activity activity)
SDK v1.0 Signature Capture API Call 2
ImageProcessingSDK.getInstance().captureSignature(Activity activity, JSONObject jsonObject)
SDK v1.0 Signature Capture Response Method
@Override
public void onCaptureSignatureFinished(Map resultMap, Response responses) {
}
With the below SDK v2.0
Signature Capture API
Check Getting Started for Signature Capture in the SDK 2.0 document.
SDK v2.0 Signature Capture API Call 1
SignatureSDK.captureSignature(activity: Activity)
SDK v2.0 Signature Capture API Call 2
SignatureSDK.captureSignature(activity: Activity, jsonObject:JSONObject)
SDK v2.0 Signature Capture Response Method
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
data ?: return
if (requestCode == SignatureConstants.SIGNATURE_CAPTURE_REQUEST_CODE) {
var signatureData = data?.getStringExtra("SignatureImage")
var signatureDataCoordinates = data?.getStringExtra("SignatureDataCoordinates")
IdentityProofingSDK.setSignatureData(signatureData,signatureDataCoordinates)
} else if (requestCode == SignatureConstants.SIGNATURE_CANCEL_RESPONSE_CODE) {
// cancelled by user
IdentityProofingSDK.setSignatureData(null,null)
}
}
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
5.3 FingerPrint Capture
Replace below SDK v1.0
FingerPrint Capture call
SDK v1.0 FingerPrint Capture API Call 1
ImageProcessingSDK.getInstance().captureFourFingerprint(Activity activity)
SDK v1.0 FingerPrint Capture API Call 2
ImageProcessingSDK.getInstance().captureFourFingerprint(Activity activity, JSONObject jsonObject)
SDK v1.0 FingerPrint Capture Response Method
@Override
public void onFourFingerCaptureFinished(Map resultMap, Response response) {
}
With the below SDK v2.0
FingerPrint Capture API
Check Getting Started for Four Fingerprint Capture in the SDK 2.0 document.
val indexCapture: Boolean = true
val middleCapture: Boolean = true
val ringCapture: Boolean = true
val babyCapture: Boolean = true
val dIndexKeep = true
val dMiddleKeep = true
val dRingKeep = true
val dBabyKeep = true
val captureLeftHand: Boolean = true
val instructionScreen: Boolean = false
val config = JSONObject()
config.put(
UIConfigurationParameters.CFC_PROCESS_INDEX_FINGER,
if (indexCapture) "Y" else "N"
)
config.put(
UIConfigurationParameters.CFC_PROCESS_MIDDLE_FINGER,
if (middleCapture) "Y" else "N"
)
config.put(
UIConfigurationParameters.CFC_PROCESS_RING_FINGER,
if (ringCapture) "Y" else "N"
)
config.put(
UIConfigurationParameters.CFC_PROCESS_BABY_FINGER,
if (babyCapture) "Y" else "N"
)
config.put(
UIConfigurationParameters.CFC_CAPTURE_LEFT_HAND,
if (captureLeftHand) "Y" else "N"
)
config.put(
UIConfigurationParameters.CFC_KEEP_INDEX_FINGER,
if (dIndexKeep) "Y" else "N"
)
config.put(
UIConfigurationParameters.CFC_KEEP_MIDDLE_FINGER,
if (dMiddleKeep) "Y" else "N"
)
config.put(
UIConfigurationParameters.CFC_KEEP_RING_FINGER,
if (dRingKeep) "Y" else "N"
)
config.put(
UIConfigurationParameters.CFC_KEEP_BABY_FINGER,
if (dBabyKeep) "Y" else "N"
)
config.put(
UIConfigurationParameters.CFC_SHOW_INSTRUCTION_SCREEN,
if (instructionScreen == true) "Y" else "N"
)
//set language for sdk capture
FingerPrintCaptureSDK.setLanguage(LanguageUtils.LANGUAGE.ES.toString())
SDK v2.0 FingerPrint Capture API
FingerPrintCaptureSDK.captureFourFingerprint(this, config) {
resultMap, response -> //set 4fingerPrintData in to the sdk 2.0
// SDK v2.0 FingerPrint Capture Response Method
IdentityProofingSDK.set4FingerPrintData(resultMap)
}
NOTE : For all parameter details, please refer to SDK v2.0 Documentation
5.4 Voice Capture
Replace below SDK v1.0
Voice Capture call
SDK v1.0 Voice Capture API
ImageProcessingSDK.startVoiceRecording(Activity activityContext, final int recordingTime)
SDK v1.0 Voice Capture Response Method
@Override
public void onVoiceRecordingFinished(Map resultMap, Response response) {
}
With the below SDK v2.0
Voice Capture API
SDK v2.0 Voice Capture API Call 1
IdentityProofingSDK.voiceCapture(activity: Activity)
SDK v2.0 Voice Capture API Call 2
IdentityProofingSDK.voiceCapture(activity: Activity, sdkCustomizationOptions: SDKCustomizationOptions)
SDK v2.0 Voice Capture Response Method
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if(requestCode == CaptureConstants.VOICE_CAPTURE_REQUEST_CODE){
if(resultCode == RESULT_OK){
var voiceCaptureData = data?.getStringExtra(CaptureConstants.VOICE_CAPTURE_DATA)
var voiceCaptureFilePath = data?.getStringExtra(CaptureConstants.VOICE_CAPTURE_FILE_PATH)
}else if(resultCode == CaptureConstants.OPERATION_CANCEL){
Toast.makeText(applicationContext,"operation canceled by user",Toast
.LENGTH_SHORT).show()
}
}
}
NOTE : For all parameter details, please refer to SDK v2.0 Documentation