Skip to main content

Welcome SDK Migration V4.X.X to V5.0.0

Removed APIs

Following APIs have been removed:

createNewOnboardingSession()
setOnboardingSession()

Use the new API for both cases:

// Use this API to resume existing session or to perform setup when using startOnboardingSection() API
setupOnboardingSession()

Removed Configs

Following classes have been removed:

OnboardingConfigV2
OnboardingFlowConfig

Use these instead:

SessionConfig // Session related configuration: region, interviewId, configurationId, validationModuleList, externalId, externalToken, customFields.
FlowConfig // Flow or Module related configuration; You can add modules through this config.
CommonConfig // SDK wide configuration: thresholds, UI behaviors

Removed callback methods

The following method has been removed:

VideoSelfieListener#onVideoRecorded()

Use the following method instead:

VideoSelfieListener#onVideoRecorded(VideoSelfieResult)

Changed or renamed APIs

startOnboardingV2()

The V2 has been removed from API method and class names. startOnboardingV2() becomes startOnboarding OnboardingListenerV2 becomes OnboardingListener

Use SessionConfig and FlowConfig instead of OnboardingConfigV2.

// Old
startOnboardingV2(Context context, OnboardingConfigV2 onboardingConfig, OnboardingListenerV2 onboardingListener)

// New
startOnboarding(Context context, SessionConfig sessionConfig, FlowConfig flowConfig, OnboardingListener onboardingListener)

startOnboardingSection()

Argument interviewId has been removed from startOnboardingSection() method.
interviewId is set internally when setupOnboardingSession() is called.
Make sure to call setupOnboardingSession() prior to calling startOnboardingSection().

// Old
startOnboardingSection(Context context, String interviewId, OnboardingFlowConfig onboardingFlowConfig, OnboardingListenerV2 onboardingListenerV2)

// New
startOnboardingSection(Context context, FlowConfig flowConfig, OnboardingListener onboardingListener)

Examples of how to use new Configs

Example: Create a SessionConfig:

SessionConfig.Builder sessionConfigBuilder = new SessionConfig.Builder();

sessionConfigBuilder.setRegion(...)
sessionConfigBuilder.setConfigurationId(...)
sessionConfigBuilder.setCustomFields(...)
sessionConfigBuilder.setQueueName(...)

SessionConfig sessionConfig = sessionConfigBuilder.build();

Example: Create a FlowConfig:

FlowConfig.Builder flowConfigBuilder = new FlowConfig.Builder();

Intro intro = new Intro.Builder()
.setIntroChecks(...)
.setAllowContinueWithoutConsent(...)
.build();

flowConfigBuilder.addIntro(intro);
flowConfigBuilder.addPhone();

IdScan idScan = new IdScan.Builder()
.setShowIdTutorials(...)
.setWaitForTutorials(...)
.setEnableFrontShownAsBackCheck(...)
.build();

flowConfigBuilder.addID(idScan);

FlowConfig flowConfig = flowConfigBuilder.build();

Example: Create a CommonConfig:

CommonConfig commonConfig = new CommonConfig.Builder()
.setShowExitConfirmation(...)
.setShowCloseButton(...)
.setIdGlareThreshold(...)
.setIdBlurThreshold(...)
.build();

IncodeWelcome.getInstance().setCommonConfig(commonConfig);

The following method has been removed in this release:

OnboardingConfigV2.setShowReviewPhoto(boolean showReviewPhoto)

Instead, use the following method in the IdScan config builder:

IdScan idScan = new IdScan.Builder()
...
.setShowRetakeScreen(boolean showRetakeScreen)
.build();

Welcome SDK Migration V4.X.X to V4.12.1

IdScan.Builder().setWaitForTutorials()

SelfieScan.Builder().setWaitForTutorials()

DocumentScan.Builder().setWaitForTutorials()

Default value of the waitForTutorials is changed from true to false

Welcome SDK Migration V4.X.X to V4.10.0

1 ProcessId.Builder() method was renamed

Replace:

ProcessId.Builder().setEnableReferredToExecutiveScreen(boolean enable)...

With:

ProcessId.Builder().setEnableIdSummaryScreen(boolean enable)...

Welcome SDK Migration V4.1.x to V4.2.x

ID Scan Help screen

The following resources have been renamed:

onboard_sdk_common_issue_1.xml
onboard_sdk_common_issue_2.xml
onboard_sdk_common_issue_3.xml

If you wish to customize these resources, use the following names instead:

onboard_sdk_id_scan_help_common_issue_1.xml
onboard_sdk_id_scan_help_common_issue_2.xml
onboard_sdk_id_scan_help_common_issue_3.xml

Welcome SDK Migration V3.x.x to V4.0.0

Deprecated APIs

The following methods have been deprecated and may be removed in a future release:

OnboardingFlowConfig#addIDScan()
OnboardingFlowConfig#addIDScan(IdScan)
OnboardingListenerV2#onIdValidationCompleted()

Use the following methods instead:

OnboardingFlowConfig#addID()
OnboardingFlowConfig#addID(IdScan)
OnboardingFlowConfig#addProcessId(ProcessId)
OnboardingListenerV2#onIdFrontCompleted(IdScanResult)
OnboardingListenerV2#onIdBackCompleted(IdScanResult)
OnboardingListenerV2#onIdProcessed(IdProcessResult)

The following class has been deprecated and may be removed in a future releases:

IdValidationResult

Use following classes instead:

IdScanResult
IdProcessResult

Default usage for ID:

// Uses default value for ScanStep which is IdScan.ScanStep.BOTH
IdScan idScan = new IdScan.Builder()
...
.setIdType(IdScan.IdType.ID)
.build();

OnboardingConfigV2.OnboardingConfigBuilderV2 builderV2 = new OnboardingConfigV2.OnboardingConfigBuilderV2();
builderV2.addID(idScan);
builderV2.addProcessId(new ProcessId.Builder().build());

Separate ID front and back:

IdScan idScanFront = new IdScan.Builder()
...
.setIdType(IdScan.IdType.ID)
.setScanStep(IdScan.ScanStep.FRONT) // note
.build();

IdScan idScanBack = new IdScan.Builder()
...
.setIdType(IdScan.IdType.ID)
.setScanStep(IdScan.ScanStep.BACK) // note
.build();

OnboardingConfigV2.OnboardingConfigBuilderV2 builderV2 = new OnboardingConfigV2.OnboardingConfigBuilderV2();
builderV2.addID(idScanFront);
builderV2.addID(idScanBack);
builderV2.addProcessId(new ProcessId.Builder().build());

Flow with first and second ID:

OnboardingConfigV2.OnboardingConfigBuilderV2 builderV2 = new OnboardingConfigV2.OnboardingConfigBuilderV2();

// Uses default IdCategory which is IdCategory.FIRST
IdScan idScan = new IdScan.Builder()
...
.setIdType(IdScan.IdType.ID)
.build();
// Uses default value for ScanStep which is IdScan.ScanStep.BOTH. You can still set a specific value, ScanStep.FRONT or ScanStep.BACK. Check previous example.

builderV2.addID(idScan);
builderV2.addProcessId(new ProcessId.Builder().build());

IdScan idScanSecond = new IdScan.Builder()
...
.setIdType(IdScan.IdType.ID)
.setIdCategory(IdCategory.SECOND)
.build();
ProcessId processIdSecond = new ProcessId.Builder()
.setIdCategory(IdCategory.SECOND)
.build()

builderV2.addID(idScanSecond);
builderV2.addProcessId(processIdSecond);

Using PASSPORT scan:

// Ignores any ScanStep settings, only front side is scanned.
IdScan idScanPassport = new IdScan.Builder()
...
.setIdType(IdScan.IdType.PASSPORT)
.build();

OnboardingConfigV2.OnboardingConfigBuilderV2 builderV2 = new OnboardingConfigV2.OnboardingConfigBuilderV2();
builderV2.addID(idScanPassport);
builderV2.addProcessId(new ProcessId.Builder().build());

Migrated Constants

The following constants have been moved:

IdValidationResult#RESULT_USER_CANCELLED = -2
IdValidationResult#RESULT_ERROR_UNKNOWN = -1
IdValidationResult#RESULT_OK = 0
IdValidationResult#RESULT_ERROR_CLASSIFICATION = 1
IdValidationResult#FRONT_ID_RESULT_ERROR_NO_FACES_FOUND = 2
IdValidationResult#RESULT_ERROR_GLARE = 3
IdValidationResult#RESULT_ERROR_SHARPNESS = 4
IdValidationResult#RESULT_ERROR_SHADOW = 5
IdValidationResult#PASSPORT_RESULT_ERROR_CLASSIFICATION = 6
IdValidationResult#RESULT_ERROR_ADDRESS_STATEMENT = 7
IdValidationResult#RESULT_ERROR_READABILITY = 8
IdValidationResult#RESULT_EMULATOR_DETECTED = 9

Use these constants instead:

IdResults#RESULT_USER_CANCELLED = -2
IdResults#RESULT_ERROR_UNKNOWN = -1
IdResults#RESULT_OK = 0
IdResults#RESULT_ERROR_CLASSIFICATION = 1
IdResults#FRONT_ID_RESULT_ERROR_NO_FACES_FOUND = 2
IdResults#RESULT_ERROR_GLARE = 3
IdResults#RESULT_ERROR_SHARPNESS = 4
IdResults#RESULT_ERROR_SHADOW = 5
IdResults#PASSPORT_RESULT_ERROR_CLASSIFICATION = 6
IdResults#RESULT_ERROR_ADDRESS_STATEMENT = 7
IdResults#RESULT_ERROR_READABILITY = 8
IdResults#RESULT_EMULATOR_DETECTED = 9
IdResults#RESULT_SKIPPED = 10;

Removed APIs

The following methods have been removed in this release:

IncodeWelcome#setOnboardingSession(@Nullable OnboardingConfigV2 onboardingConfig,
@NonNull String interviewId,
@Nullable List<OnboardingValidationModule> onboardingValidationModules,
@Nullable OnboardingSessionListener onboardingSessionListener);

IncodeWelcome#setOnboardingSession(@Nullable OnboardingConfigV2 onboardingConfig,
@NonNull String interviewId,
@Nullable OnboardingSessionListener onboardingSessionListener)


IncodeWelcome#startIntro(@NonNull Context context, @NonNull Intro intro, @NonNull IntroListener introListener)

IncodeWelcome#startCurpValidation(Context context,
String interviewId,
CurpValidationListener curpValidationListener)

IncodeWelcome#startPhoneNumber(@NonNull Context context,
@Nullable String interviewId,
@NonNull PhoneNumberListener phoneNumberListener)

IncodeWelcome#startSelfieScan(@NonNull Context context,
@Nullable String interviewId,
@Nullable SelfieScan selfieScan,
@NonNull SelfieScanListener selfieScanListener)

IncodeWelcome#startFaceMatch(@NonNull Context context,
@Nullable String interviewId,
FaceMatch faceMatch,
@NonNull FaceMatchListener faceMatchListener)

IncodeWelcome#startQrCodeScan(@NonNull Context context,
@Nullable String interviewId,
boolean showTutorials,
@NonNull QRScanListener qrScanListener)

IncodeWelcome#startDocumentValidation(@NonNull Context context,
@Nullable String interviewId,
@NonNull DocumentType documentType,
boolean showTutorials,
boolean showDocumentProviderOptions,
@NonNull DocumentValidationListener documentValidationListener)

IncodeWelcome#startUserConsent(@NotNull Context context,
@Nullable String interviewId,
@NotNull String title, @NotNull String content,
@NotNull UserConsentListener userConsentListener)

IncodeWelcome#startGovernmentValidation(@NonNull Context context,
@Nullable String interviewId,
@NonNull GovernmentValidationListener governmentValidationListener)

IncodeWelcome#startCollectUserSignature(@NonNull Context context,
@Nullable String interviewId,
@Nullable Class<? extends BaseSignatureFormActivity> signatureFormActivityClass,
@NonNull SignatureFormListener signatureFormListener)

IncodeWelcome#startCollectUserSignature(@NonNull Context context,
@Nullable String interviewId,
@Nullable Signature signature,
@Nullable Class<? extends BaseSignatureFormActivity> signatureFormActivityClass,
@NonNull SignatureFormListener signatureFormListener)

IncodeWelcome#startCaptcha(@NonNull Context context,
@Nullable String interviewId,
boolean regenerateInterviewCode,
@NonNull CaptchaListener captchaListener)

IncodeWelcome#startVideoConference(@NonNull Context context,
boolean disableMicOnStartup,
boolean validateCaptcha,
@Nullable String token,
@NonNull VideoConferenceListener videoConferenceListener)

IncodeWelcome#startVideoConference(@NonNull Context context,
@Nullable String interviewId,
boolean disableMicOnStartup,
@NonNull VideoConferenceListener videoConferenceListener)

IncodeWelcome#startVideoConference(@NonNull Context context,
@Nullable String interviewId,
@Nullable Conference conference,
@NonNull VideoConferenceListener videoConferenceListener)

IncodeWelcome#startUserScore(@NonNull Context context,
@Nullable String interviewId,
@NonNull UserScoreListener userScoreListener)

IncodeWelcome#startApprove(@NonNull Context context,
@Nullable String interviewId,
boolean showUi,
boolean silentFaceMatch,
boolean forceApproval,
@NonNull ApproveListener approveListener)

IncodeWelcome#startVideoSelfie(@NonNull Context context,
@Nullable String interviewId,
@Nullable VideoSelfie videoSelfie,
@NonNull VideoSelfieListener videoSelfieListener)

IncodeWelcome#startGeolocation(@NonNull Context context,
@Nullable String interviewId,
@NonNull GeolocationListener geolocationListener)

Use sections API instead:

IncodeWelcome#startOnboardingSection(@NonNull Context context,
@Nullable String interviewId,
@NonNull OnboardingFlowConfig onboardingFlowConfig,
@NonNull OnboardingListenerV2 onboardingListener)

Welcome SDK Migration V3.3.0 to V3.4.0

Deprecated APIs

The following methods have been deprecated and may be removed in a future release:

IncodeWelcome.Builder(...).enableLocalFaceRecognition(...)

IncodeWelcome.Builder(...).enableLocalLiveness(...)

In order to keep using local face recognition and/or local liveness, include the following modules:

implementation 'com.incode.sdk:model-face-recognition:2.0.0'
implementation 'com.incode.sdk:model-liveness-detection:2.0.0'

Including the modules above will increase the total impact on the app size by 8.8MB and 13.8MB respectively. Refer to Gradle Integration on how to avoid this by using Google Play Feature Delivery.

Welcome SDK Migration V3.1.X to V3.2.X

If you are using Conference module

The dependency has been updated to v1.5.2:

implementation 'com.incode.sdk:conference:1.5.2'

Deprecated APIs

The following methods have been deprecated and may be removed in a future release:

IncodeWelcome#setOnboardingSession(OnboardingConfigV2 onboardingConfig,
String interviewId,
List<OnboardingValidationModule> onboardingValidationModules,
OnboardingSessionListener onboardingSessionListener)

IncodeWelcome#setOnboardingSession(OnboardingConfigV2 onboardingConfig,
String interviewId,
OnboardingSessionListener onboardingSessionListener)

Use this method instead:

IncodeWelcome#setOnboardingSession(OnboardingConfigV2 onboardingConfig,
OnboardingSessionListener onboardingSessionListener)

To pass the interviewId, use OnboardingConfigV2.OnboardingConfigBuilderV2#setInterviewId(String interviewId) method:

OnboardingConfigV2 onboardingConfig = new OnboardingConfigV2.OnboardingConfigBuilderV2().setInterviewId("customInterviewId").build();

And then call the IncodeWelcome#setOnboardingSession(OnboardingConfigV2, OnboardingSessionListener) method:

IncodeWelcome.getInstance().setOnboardingSession(OnboardingConfigV2 onboardingConfig, OnboardingSessionListener onboardingSessionListener);

Welcome SDK Migration V3.0.0 to V3.1.0

Deprecated individual APIs

Replace

IncodeWelcome.getInstance().startModuleX(@NonNull Context context, @Nullable String interviewId, @NonNull ModuleXListener moduleXListener) {...

With

IncodeWelcome.getInstance().startOnboardingSection(this, interviewId, new OnboardingConfigV2.OnboardingConfigBuilderV2().setFlowTag("Module X section").addModuleX().build(), new OnboardingListenerV2() {...

Affected APIs:

IncodeWelcome.getInstance().startIntro(@NonNull Context context, @Nullable String interviewId, @NonNull Intro intro, @NonNull IntroListener introListener) {...
IncodeWelcome.getInstance().startIdValidation(@NonNull Context context, @Nullable String interviewId, @Nullable IdScan idScan, @NonNull IdValidationListener idValidationListener) {...
IncodeWelcome.getInstance().startPhoneNumber(@NonNull Context context, @Nullable String interviewId, @NonNull PhoneNumberListener phoneNumberListener) {...
IncodeWelcome.getInstance().startFaceMatch(@NonNull Context context, @Nullable String interviewId, FaceMatch faceMatch, @NonNull FaceMatchListener faceMatchListener) {...
IncodeWelcome.getInstance().startQrCodeScan(@NonNull Context context, @Nullable String interviewId, boolean showTutorials, @NonNull QRScanListener qrScanListener) {...
IncodeWelcome.getInstance().startDocumentValidation(@NonNull Context context, @Nullable String interviewId, @NonNull DocumentType documentType, boolean showTutorials, boolean showDocumentProviderOptions, @NonNull DocumentValidationListener documentValidationListener) {...
IncodeWelcome.getInstance().startUserConsent(@NonNull Context context, @Nullable String interviewId, @NonNull UserConsentListener userConsentListener) {...
IncodeWelcome.getInstance().startGovernmentValidation(@NonNull Context context, @Nullable String interviewId, @NonNull GovernmentValidationListener governmentValidationListener) {...
IncodeWelcome.getInstance().startCollectUserSignature(@NonNull Context context, @Nullable String interviewId, @Nullable Signature signature, @Nullable Class<? extends BaseSignatureFormActivity> signatureFormActivityClass, @NonNull SignatureFormListener signatureFormListener) {...
IncodeWelcome.getInstance().startCaptcha(@NonNull Context context, @Nullable String interviewId, boolean regenerateInterviewCode, @NonNull CaptchaListener captchaListener)) {...
IncodeWelcome.getInstance().startVideoConference(@NonNull Context context, boolean disableMicOnStartup, boolean validateCaptcha, @Nullable String token, @NonNull VideoConferenceListener videoConferenceListener) {...
IncodeWelcome.getInstance().startVideoConference(@NonNull Context context, @Nullable String interviewId, @Nullable Conference conference, @NonNull VideoConferenceListener videoConferenceListener) {...
IncodeWelcome.getInstance().startUserScore(@NonNull Context context, @Nullable String interviewId, @NonNull UserScoreListener userScoreListener) {...
IncodeWelcome.getInstance().startApprove(@NonNull Context context, @Nullable String interviewId, boolean showUi, boolean silentFaceMatch, boolean forceApproval, @NonNull ApproveListener approveListene) {...
IncodeWelcome.getInstance().startAcceptVideoSelfie(@NonNull Context context, @NonNull AcceptVideoSelfieListener acceptVideoSelfieListener) {...
IncodeWelcome.getInstance().startVideoSelfie(@NonNull Context context, @Nullable String interviewId, @Nullable VideoSelfie videoSelfie, @NonNull VideoSelfieListener videoSelfieListener) {...
IncodeWelcome.getInstance().startGeolocation(@NonNull Context context, @Nullable String interviewId, @NonNull GeolocationListener geolocationListener) {...

Refer to User Guide for full section API implementation.

Welcome SDK Migration V2.x.x to V3.x.x

1. Customization

Unfortunately, we had to make some breaking changes to allow for better support for UI customization.
This means that you might have to do some of the customizations again.
Refer to Customization Guide for details.
Do not hesitate to contact us for any additional info.

We will try to list the most common customizations here, and how to upgrade to the new version:

Custom theme colors

To use a custom theme color, add the following colors to your colors.xml:

<color name="onboard_sdk_colorPrimary">your_custom_color</color>
<color name="onboard_sdk_colorAccent">your_custom_color</color>

Custom text colors

There are five different colors of text in the SDK.
To modify them, add the following items to your styles.xml:

<item name="onboard_sdk_TextColorDefault" type="color">your_custom_color</item>
<item name="onboard_sdk_TextColorLabel" type="color">your_custom_color</item>
<item name="onboard_sdk_TextColorPlaceholder" type="color">your_custom_color</item>
<item name="onboard_sdk_TextColorDisabled" type="color">your_custom_color</item>
<item name="onboard_sdk_TextColorInverted" type="color">your_custom_color</item>

Custom fonts

If you had applied custom fonts to the Welcome SDK, you will no longer see the custom fonts.
In order to change the fonts since V3.0.0, you should add the following items to your styles.xml:

<item name="onboard_sdk_FontFamilyBold" type="font">@font/your_custom_bold_font</item>
<item name="onboard_sdk_FontFamilyRegular" type="font">@font/your_custom_regular_font</item>

OnboardSdkTextPrimary, BaseOnboardSdkTextPrimary, OnboardSdkTextSecondary and BaseOnboardSdkTextSecondary styles have been removed.

Custom buttons

If you had changed the colors of CTA buttons, you should have had something like this in your colors.xml:

<color name="onboard_sdk_btn_cta_background_color">your_custom_color</color> // default button color
<color name="onboard_sdk_btn_cta_background_color_pressed">your_custom_color</color> // button color to be used when button is pressed
<color name="onboard_sdk_btn_cta_background_color_disabled">your_custom_color</color> // button color to be used if the button is disabled

<color name="onboard_sdk_btn_cta_inverted_background_color">your_custom_color</color>
<color name="onboard_sdk_btn_cta_inverted_background_color_pressed">your_custom_color</color>
<color name="onboard_sdk_btn_cta_inverted_background_color_disabled">your_custom_color</color>

CTA and CTA Inverted buttons have been renamed to Primary and Secondary.
There is also a third type of button - Text Button.
Replace these colors with following:

<!-- Button Primary -->
<color name="onboard_sdk_btn_primary_background_color">your_custom_color</color> // default background color
<color name="onboard_sdk_btn_primary_border_color">your_custom_color</color> // default border color

<!-- Button Primary Pressed -->
<color name="onboard_sdk_btn_primary_background_color_pressed">your_custom_color</color> // pressed state background color
<color name="onboard_sdk_btn_primary_border_color_pressed">your_custom_color</color> // pressed state border color

<!-- Button Primary Disabled -->
<color name="onboard_sdk_btn_primary_background_color_disabled">your_custom_color</color> // disabled state background color
<color name="onboard_sdk_btn_primary_border_color_disabled">your_custom_color</color> // disabled state border color

<!-- Button Secondary -->
<color name="onboard_sdk_btn_secondary_background_color">your_custom_color</color> // default background color
<color name="onboard_sdk_btn_secondary_border_color">your_custom_color</color> // default border color

<!-- Button Secondary Pressed -->
<color name="onboard_sdk_btn_secondary_background_color_pressed">your_custom_color</color> // pressed state background color
<color name="onboard_sdk_btn_secondary_border_color_pressed">your_custom_color</color> // pressed state border color

<!-- Button Secondary Disabled -->
<color name="onboard_sdk_btn_secondary_background_color_disabled">your_custom_color</color> // disabled state background color
<color name="onboard_sdk_btn_secondary_border_color_disabled">your_custom_color</color> // disabled state border color

Welcome SDK Migration V2.9.x to V2.10.x

1. VideoSelfie deprecated APIs were removed

Replace

IncodeWelcome.getInstance().startVideoSelfie(@NonNull Context context, @Nullable String interviewId, boolean askForProofOfAddress, @NonNull VideoSelfieListener videoSelfieListener) {...

With

IncodeWelcome.getInstance().startVideoSelfie(@NonNull Context context, @Nullable String interviewId, @Nullable VideoSelfie videoSelfie, @NonNull VideoSelfieListener videoSelfieListener) {...

Replace

OnboardingConfigV2.OnboardingConfigBuilderV2().addVideoSelfie(boolean askForProofOfAddress)...

With

OnboardingConfigV2.OnboardingConfigBuilderV2().addVideoSelfie(VideoSelfie videoSelfie)...

2. VideoSelfie.Builder() method was renamed

Replace

VideoSelfie.Builder().setAskForProofOfAddress(boolean askForProofOfAddress)...

With

VideoSelfie.Builder().setDocumentScanEnabled(boolean isEnabled)...

Welcome SDK Migration V2.8.x to V2.9.x

1. Face login feature changes

Face recognition in server mode now sends photo to the server (instead of locally generated template)
API was adapted accordingly: enableFaceLogin() was replaced with enableLocalFaceRecognition()

Replace

IncodeWelcome.Builder(...).enableFaceLogin(...)

With

IncodeWelcome.Builder(...).enableLocalFaceRecognition(...)

Welcome SDK Migration V2.7.x to V2.8.x

1. Updated Core dependency

Replace

implementation 'com.incode.sdk:core-light:1.7.0

With

implementation 'com.incode.sdk:core-light:2.0.0

2. Changes to IncodeWelcome.createNewOnboardingSession()

This info is relevant if you are using onboardingValidationModules parameter.
If you are using null as onboardingValidationModules, you can ignore this step.

/**
* @param onboardingConfig Onboarding configuration
* @param onboardingValidationModules Defines which validations are performed and used for calculating the score in single onboarding session.
* If null, default configuration is used: id, liveness, faceRecognition
* @param onboardingSessionListener Callback for create new onboarding result
*/
public void createNewOnboardingSession(@Nullable OnboardingConfigV2 onboardingConfig,
@Nullable List<OnboardingValidationModule> onboardingValidationModules,
@Nullable OnboardingSessionListener onboardingSessionListener)

New modules were added to OnboardingValidationModule enum:

/**
* Include ID verification score in the total score
*/
id,

/**
* Include score calculated by the Liveness check in Selfie Scan in the total score
*/
liveness,

/**
* Include Face Recognition score between the Selfie and ID Photo in the total score
*/
faceRecognition,

/**
* Include data validation score from Government Validation in the total score
*/
governmentValidation,

/**
* [NEW] Include Face Validation score between the Selfie and ID Photo from Government Database in the total score
*/
governmentFaceValidation,

/**
* [NEW] Include Video Selfie score in the total score
*/
videoSelfie

If you had added governmentValidation module to the list, you now need to add governmentFaceValidation as well.

In previous versions, Video Selfie score was implicitly included in the total score.
It is now required to add videoSelfie module to the list if you want Video Selfie module to affect the total score.

Welcome SDK Migration V2.5.x to V2.6.x

1. Changes to IncodeWelcome.startFaceMatch()

Old method call:

IncodeWelcome.getInstance().startFaceMatch(OnboardingActivity.this, interviewId, spoofConfidence, selfieImagePath, new FaceMatchListener() { ...

Replace with:

IncodeWelcome.getInstance().startFaceMatch(OnboardingActivity.this, interviewId, new FaceMatch.Builder().build(), new FaceMatchListener() { ...

Welcome SDK Migration V2.4.x to V2.5.x

1. Changes to ApproveListener

Old listener:

void onApproveCompleted(boolean success);

Replace with:

void onApproveCompleted(ApproveResult approveResult);

The ApproveResult object contains isSuccess() and getUuid() methods.
Instead of old callback argument success, use approveResult.isSuccess() to check if the approval has been successful.

You can now also use the approveResult.getUuid() method to get the unique ID of the newly created user (if isSuccess() is true).
If isSuccess() is false, then approveResult.getUuid() will return null.

2. Changes to Tutorial videos

Since version V2.5.0 Welcome SDK uses Lottie animations for Tutorial videos.
If you wish to customize those, you now need to provide the corresponding Lottie .json files.
For more details, check Customization Guide

Welcome SDK Migration V2.3.x to V2.4.x

1. Changes to Conference module configuration

Queue is no longer a parameter of Conference module. Instead, use OnboardingConfigV2.OnboardingConfigBuilderV2().setQueueName(String queueName) method.

If you had code similar to this:

builder.addConference(queueName);

Replace it with:

builder.addConference();
builder.setQueueName(queueName);

To create a custom config for Conference module, use the new Conference.Builder class:

Conference conference = new Conference.Builder()
.setDisableMicOnCallStart(false)
.build();

And then add it to your OnboardingConfigV2.OnboardingConfigBuilderV2 using:

builder.addConference(conference);

Welcome SDK Migration V2.3.4 to V2.3.5

1. Moving ID auto capture timeout configuration to server

Remove IdScan.Builder().setIdAutoCaptureTimeout(timeout)

Timeout can now be set on server through REST API.

Welcome SDK Migration V2.3.3 to V2.3.4

1. If you are not using face authentication feture

Remove any references to IncodeWelcome.getInstance().downloadLibraries() or IncodeWelcome.getInstance().subscribeForLibrariesReady()

Welcome SDK Migration V2.2.x to V2.3.x

1. If you are using Conference module

Add new dependency:

implementation 'com.incode.sdk:conference:1.5.0'

2. Changes in callback methods

Old:

public void onOnboardingSessionCreated(String token, String interviewId) {}

New:

public void onOnboardingSessionCreated(String token, String interviewId, String region) {}

3. Region class is being deprecated

Replace Region with RegionV2.

OnboardingConfigV2.OnboardingConfigBuilderV2().setRegion(region) becomes OnboardingConfigV2.OnboardingConfigBuilderV2().setRegion(region.getCode())

Welcome SDK Migration V2.1.6 to V2.2.0

1. Gradle integration

Update the com.incode.sdk:welcome version to 2.2.0.

implementation 'com.incode.sdk:welcome:2.2.0'

2. Moved/renamed classes

Listener classes have been moved out of the IncodeWelcome class to separate package com.incode.welcome_sdk.listeners. Result classes have been moved to package com.incode.welcome_sdk.results.

Renamed classes:

import com.incode.welcome_sdk.IncodeWelcome.UserScore;
import com.incode.welcome_sdk.IncodeWelcome.IDCaptureListener

replace with:

import com.incode.welcome_sdk.results.UserScoreResult;
import com.incode.welcome_sdk.listeners.IdCaptureListener;

Moved classes: Replace any references to inner classes of IncodeWelcome, for example:

IncodeWelcome.VideoConferenceListener
IncodeWelcome.CaptchaResult
IncodeWelcome.FaceRecognitionPrepareListener
IncodeWelcome.LibraryDownloadError
IncodeWelcome.IdCaptureResult
IncodeWelcome.SelfieCaptureListener
IncodeWelcome.ReportListener
IncodeWelcome.PhoneNumberResult
IncodeWelcome.UserScore
IncodeWelcome.IdValidationResult
IncodeWelcome.DocumentValidationResult
IncodeWelcome.SelfieScanResult
IncodeWelcome.FaceMatchResult
IncodeWelcome.SignatureFormResult
IncodeWelcome.UserConsentResult

delete IncodeWelcome. and re-import the classes:

import com.incode.welcome_sdk.listeners.VideoConferenceListener;
import com.incode.welcome_sdk.results.CaptchaResult;
import com.incode.welcome_sdk.listeners.FaceRecognitionPrepareListener;
import com.incode.welcome_sdk.commons.exceptions.LibraryDownloadError;
import com.incode.welcome_sdk.results.IdCaptureResult;
import com.incode.welcome_sdk.listeners.SelfieCaptureListener;
import com.incode.welcome_sdk.listeners.ReportListener;
import com.incode.welcome_sdk.results.PhoneNumberResult;
import com.incode.welcome_sdk.results.IdValidationResult;
import com.incode.welcome_sdk.results.DocumentValidationResult;
import com.incode.welcome_sdk.results.SelfieScanResult;
import com.incode.welcome_sdk.results.FaceMatchResult;
import com.incode.welcome_sdk.results.SignatureFormResult;
import com.incode.welcome_sdk.results.UserConsentResult;

3. Add Throwable error to onError() callbacks

Replace any instances of onError() method:

@Override
public void onError() {

with:

@Override
public void onError(Throwable error) {

4. Delete onLicenseNotVerified() methods

If you have implemented any instances of onLicenseNotVerified() method:

@Override
public void onLicenseNotVerified()

Just delete them.

This error will now be passed through common onError(Throwable error) callback.

Welcome SDK Migration V1 to V2.+ versions

1. Gradle integration

Update the com.incode.sdk:welcome version to 2.1.6 and add new com.incode.sdk:core-light dependency.

implementation 'com.incode.sdk:welcome:2.1.6'
implementation 'com.incode.sdk:core-light:1.5.0'

2. Configuring the Onboarding flow

Using OnboardingConfig is now deprecated and you should be using OnboardingConfigV2 instead. OnboardingConfigV2 offers much improved flexibility by allowing you to add individual steps to the flow and choose their order, ie:

OnboardingConfigV2.OnboardingConfigBuilderV2 builderV2 = new OnboardingConfigV2.OnboardingConfigBuilderV2()
.setRegion(userSessionPreferences.getRegion())
.addPhone()
.addIDScan(userSessionPreferences.getIdAutoCaptureTimeout())
.addDocumentScan()
.addSelfieScan()
.addFaceMatch()
.addSignature();

This config will add Phone, ID Scan, Document Scan, Selfie scan, Face Match and Signature screen steps to the flow.

3. Starting Onboarding flow

Replace

IncodeWelcome.getInstance().startOnboarding(context, onboardingConfig, onboardingListener)

with:

IncodeWelcome.getInstance().startOnboardingV2(context, onboardingConfigV2, onboardingListenerV2)

Provide IncodeWelcome.OnboardingListenerV2 to listen for updates and results throughout the flow.

See the full API javadoc