Migration Guide
Welcome SDK Migration from V5.28.0 to 5.29.0β
Upgrade compileSdkβ
With the update of the internal Compose dependencies, you will need to upgrade your project's compileSdk to level 34:
compileSdk 34
Update core-light dependency to the latest versionβ
implementation 'com.incode.sdk:core-light:2.6.4'
Deprecated APIsβ
The following methods have been deprecated and will be removed in a future release:
- Java
- Kotlin
VideoSelfie.Builder.setAssistedOnboardingEnabled()
VideoSelfie.Builder.setAssistedOnboardingEnabled()
Transition to the New Video Selfie UI Experienceβ
With the introduction of the new Video Selfie UI experience and the removal of the old Video Selfie UI, certain string resources from strings.xml
and JSON animation files have been removed.
If you had previously customized the Video Selfie and Video Selfie Tutorial screens, please remove your customizations for the following resources:
Video Selfie Tutorial Screenβ
<string name="onboard_sdk_video_selfie_tip_title">Letβs record a video</string>
<string name="onboard_sdk_video_selfie_tip_subtitle">Follow the instructions during the video</string>
<string name="onboard_sdk_video_selfie_tip_btn_continue">@string/onboard_sdk_btn_continue</string>
onboard_sdk_lottie_tutorial_video_selfie.json
Video Selfie Screenβ
<string name="onboard_sdk_video_selfie_show_document_label_highlighted_part">Proof of Address</string>
<string name="onboard_sdk_video_selfie_show_document_label">Show your Proof of Address and then press Continue</string>
<string name="onboard_sdk_video_selfie_instructions_questions">We need you to verbally confirm that you accept the terms</string>
<string name="onboard_sdk_video_selfie_bottom_feedback_questions">Once youβve answered, tap Continue:</string>\
<string name="onboard_sdk_video_selfie_bottom_feedback_voice_consent">Once youβve accepted, tap Continue:</string>
Update string resourcesβ
The following string has been used for the Review Your Photo screen subtitle:
<string name="onboard_sdk_review_your_photo_subtitle">Make sure the letters are clear and it has good lighting</string>
It's replaced with two new strings:
<string name="onboard_sdk_review_your_photo_hint1">Ensure that the text on the ID is readable</string>
<string name="onboard_sdk_review_your_photo_hint2">The ID photo must be sharp and without glare</string>
Deprecated stylesβ
The following style has been deprecated:
onboard_sdk_ScanFeedbackText
To maintain backward compatibility, it has been replaced with:
onboard_sdk_ScanFeedbackTextSmall
If you use any of following optional dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:kiosk-login:1.3.5'
implementation 'com.incode.sdk:nfc:1.3.5'
implementation 'com.incode.sdk:qr-face-login:1.2.3'
The vertical style of the Help screen in the IdScan
module has been removed. The following customization will no longer work, and can be removed:β
<item name="onboard_sdk_need_help_vertical" type="bool">true</item>
Welcome SDK Migration from V5.21.0 to 5.26.2-compatβ
The compat
versions of Incode Welcome SDK dependencies were introduced for projects that couldn't upgrade from 5.21.0
to 5.22.0
due to the Kotlin version upgrade from 1.6.21
to 1.8.10
. As such, the path to migrate to 5.26.2-compat includes all the notes from 5.22.0 until now, with the following exceptions.
1. Update core-light dependency to the latest versionβ
implementation 'com.incode.sdk:core-light:2.6.3'
2. If you use any of following optional dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:kiosk-login:1.3.4-compat'
implementation 'com.incode.sdk:nfc:1.3.4-compat'
implementation 'com.incode.sdk:qr-face-login:1.2.2-compat'
implementation 'com.incode.sdk:video-streaming:1.5.5'
Note: If Android Studio shows a warning about nfc
1.3.4 or qr-face-login
1.2.2 being available, these can be safely ignored.
Welcome SDK Migration from V5.26.0 to 5.26.2-compatβ
As the compat
versions of Incode Welcome SDK dependencies are only intended for projects that can't use at least Kotlin 1.8.10
, there's no need for anyone using 5.26.0 to upgrade to 5.26.2-compat. All relevant changes will be included in 5.27.0.
Note: If Android Studio shows a warning about a new version, 5.26.2-compat
being available, that can be safely ignored.
Welcome SDK Migration from V5.25.0 to 5.26.0β
If you use any of following optional dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:nfc:1.3.4'
implementation 'com.incode.sdk:qr-face-login:1.2.2'
implementation 'com.incode.sdk:kiosk-login:1.3.3'
Changes in behaviorβ
IdScan and SelfieScan modulesβ
Old behavior:
- Denying Camera or Microphone permissions in
IdScan
andSelfieScan
modules results in anonUserCancelled()
callback.
New behavior:
- Denying Camera or Microphone permissions in
IdScan
andSelfieScan
modules now results in anonError(PermissionDeniedException())
callback.
Changes to video-streaming
β
This release now requires a device to have more than 2GB of RAM to use video-streaming
. If a device has exactly 2GB of RAM or less, and streamFrames
is enabled, the setting will be ignored.
API Changesβ
The following field's type was changed from String
to String?
(nullable): CurpValidationResult.curp
.
Deprecated APIsβ
The following methods have been deprecated and will be removed in a future release:
- Java
- Kotlin
IncodeWelcome.fetchAllFlows(@NonNull String token, FetchFlowsListener fetchFlowsListener)
IncodeWelcome.fetchFlow(String flowId, String token, FetchFlowListener fetchFlowListener)
IncodeWelcome.fetchAllFlows(token: String, fetchFlowsListener: FetchFlowsListener?)
IncodeWelcome.fetchFlow(flowId: String?, token: String?, fetchFlowListener: FetchFlowListener?)
Welcome SDK Migration from V5.24.0 to 5.25.0β
1. Update core-light dependency to the latest versionβ
implementation 'com.incode.sdk:core-light:2.6.3'
2. If you use any of following optional dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:nfc:1.3.3'
implementation 'com.incode.sdk:qr-face-login:1.2.1'
implementation 'com.incode.sdk:kiosk-login:1.3.2'
3. Update string resourcesβ
The following strings have been used for the Exit Confirmation dialog buttons, as well as for a couple of other screens:
<string name="onboard_sdk_results_yes">Yes</string>
<string name="onboard_sdk_results_no">No</string>
The yes/no strings for the Exit Confirmation dialog buttons have now been replaced with the following strings:
<string name="onboard_sdk_exit_dialog_positive_button">Quit</string>
<string name="onboard_sdk_exit_dialog_negative_button">Get back</string>
If you customized the Exit Confirmation dialog buttons, please update your customizations to the new strings.
Deprecated APIsβ
The following methods have been deprecated and will be removed in a future release:
- Java
- Kotlin
IncodeWelcome.fetchRegions(FetchRegionsListener fetchRegionsListener)
SessionConfig.Builder.setRegionIsoCode(String regionIsoCode)
IncodeWelcome.downloadLibraries()
IncodeWelcome.isLibrariesReady() // Always returns true
IncodeWelcome.subscribeForLibrariesReady(FaceRecognitionPrepareListener faceRecognitionReadyListener)
IncodeWelcome.fetchRegions(fetchRegionsListener: FetchRegionsListener)
SessionConfig.Builder.setRegionIsoCode(regionIsoCode: String)
IncodeWelcome.downloadLibraries()
IncodeWelcome.isLibrariesReady() // Always returns true
IncodeWelcome.subscribeForLibrariesReady(faceRecognitionReadyListener: FaceRecognitionPrepareListener?)
Changes to OnboardingSessionListener
β
The region
argument in onOnboardingSessionCreated(String token, String interviewId, String region)
method is being deprecated.
The value of region
is now always "ALL"
.
This argument will be removed in a future release.
Welcome SDK Migration from V5.23.0 to V5.24.0β
If you use any of following optional dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:nfc:1.3.2'
implementation 'com.incode.sdk:qr-face-login:1.2.0'
Changes in behaviorβ
Geolocation moduleβ
Old behavior:
- Denying Geolocation permission in
Geolocation
module results inonUserCancelled()
callback.
New behavior:
- Denying Geolocation permission in
Geolocation
module now results inonError(PermissionDeniedException())
callback.
Changes to CommonConfig
β
For configuring auto-capture timeouts in the IdScan
and SelfieScan
modules, replace the methods that were removed:
- Java
- Kotlin
CommonConfig.Builder.setIdAutoCaptureTimeout()
CommonConfig.Builder.setSelfieAutoCaptureTimeout()
CommonConfig.Builder.setIdAutoCaptureTimeout()
CommonConfig.Builder.setSelfieAutoCaptureTimeout()
With the following methods:
- Java
- Kotlin
IdScan.Builder.setIdAutoCaptureTimeout()
SelfieScan.Builder.setSelfieAutoCaptureTimeout()
IdScan.Builder.setIdAutoCaptureTimeout()
SelfieScan.Builder.setSelfieAutoCaptureTimeout()
Note that these methods are now parts of the respective modules' configurations.
Changes to ScreenName
classβ
Renamed constants:
GEOLOCATION_PERMISSIONS_EXPLAINED -> GEOLOCATION
GEOLOCATION_PERMISSIONS_DIALOGUE -> GEOLOCATION_PERMISSION_MANDATORY_DIALOG
VIDEO_SELFIE_VOICE_CONSENT_PERMISSION_DIALOGUE -> MICROPHONE_PERMISSION_MANDATORY_DIALOG,
Deleted (unused) constants:
FRONT_ID_CAMERA_PERMISSIONS
BACK_ID_CAMERA_PERMISSIONS
DOCUMENT_CAPTURE_CAMERA_PERMISSIONS
VIDEO_SELFIE_PERMISSIONS_DIALOGUE
New constants:
CAMERA_PERMISSION_MANDATORY_DIALOG
Welcome SDK Migration from V5.21.0 to V5.22.0β
1. If you use any of following optional dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:nfc:1.3.1'
implementation 'com.incode.sdk:video-streaming:1.5.5'
Welcome SDK Migration from V5.20.0 to V5.21.0β
1. Update core-light dependency to the latest versionβ
implementation 'com.incode.sdk:core-light:2.6.2'
2. If you use any of the following optional dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:nfc:1.3.0'
implementation 'com.incode.sdk:kiosk-login:1.3.1'
Welcome SDK Migration from V5.18.0 to V5.20.0β
1. Update core-light dependency to the latest versionβ
implementation 'com.incode.sdk:core-light:2.6.1'
2. If you use any of the following optional dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:nfc:1.2.1'
Welcome SDK Migration from V5.17.2 to V5.18.0β
1. Update core-light dependencyβ
Replace
implementation 'com.incode.sdk:core-light:2.5.1'
With
implementation 'com.incode.sdk:core-light:2.6.0'
2. If you use any of the following optional dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:kiosk-login:1.3.0'
implementation 'com.incode.sdk:model-face-recognition:3.0.0'
implementation 'com.incode.sdk:model-id-face-detection:2.1.0'
implementation 'com.incode.sdk:model-liveness-detection:3.0.0'
implementation 'com.incode.sdk:nfc:1.2.0'
3. Updates to Face Mask checksβ
The model dependency previously required for performing face mask checks is now incorporated into core-light:2.6.0
. As such, model-mask-detection
is no longer required and should be removed.
Similarly, face mask checks no longer have a configurable threshold or variable confidence level. Any usage of the following APIs should be removed:
CommonConfig.getMaskThreshold()
CommonConfig.Builder.setMaskThreshold()
SelfieScanResult.maskConfidence
Welcome SDK Migration from V5.17.0 to V5.17.2β
1. Update core-light dependencyβ
Replace
implementation 'com.incode.sdk:core-light:2.5.0'
With
implementation 'com.incode.sdk:core-light:2.5.1'
2. Update video-streaming dependencyβ
Replace
implementation 'com.incode.sdk:video-streaming:1.5.3'
With
implementation 'com.incode.sdk:video-streaming:1.5.4'
Welcome SDK Migration from V5.16.0 to V5.17.0β
1. If you use any of the following dependencies, make sure to update to the latest versionsβ
implementation 'com.incode.sdk:nfc:1.1.0'
implementation 'com.incode.sdk:kiosk-login:1.2.0'
implementation 'com.incode.sdk:qr-face-login:1.1.0'
2. If you are using the conference dependencyβ
Replace
implementation 'com.incode.sdk:conference:1.5.2'
With
implementation 'com.incode.sdk:video-streaming:1.5.3'
3. Updates to External Analyticsβ
External analytics (for screens outside of the Incode SDK) is no longer being controlled using the IncodeWelcome.Builder.setLoggingEnabled()
method. It now has its own separate methods:
IncodeWelcome.Builder.setExternalAnalyticsEnabled()
enables or disables collecting analytics events for screens outside of the Incode SDK. Default value is true
.
IncodeWelcome.Builder.setExternalScreenshotsEnabled()
enables or disables collecting screenshots of screens outside of the Incode SDK. External Analytics must be enabled for this configuration to take effect. Default value is false
.
To change the default behavior, please use the new APIs.
Welcome SDK Migration from V5.14.0 to V5.15.0β
1. Update core-light dependencyβ
Replace
implementation 'com.incode.sdk:core-light:2.4.0'
With
implementation 'com.incode.sdk:core-light:2.5.0'
2. Update kiosk-login dependencyβ
Replace
implementation 'com.incode.sdk:kiosk-login:1.0.0'
With
implementation 'com.incode.sdk:kiosk-login:1.1.0'
Welcome SDK Migration from V5.12.0 to V5.13.0β
1. Update core-light dependencyβ
Replace
implementation 'com.incode.sdk:core-light:2.3.0'
With
implementation 'com.incode.sdk:core-light:2.4.0'
2. ID side detection is bundled with the latest version of ID validation model, so the following dependency is no longer necessary:β
implementation 'com.incode.sdk:model-id-face-detection:2.0.0'
If present, please remove it from your build.gradle
.
Welcome SDK Migration from V5.11.0 to V5.12.0β
Changes to VerifyListener
β
onError()
method of the VerifyListener
now receives a Throwable error
as an argument,
so you can see the actual exception that has been thrown.
If you are using VerifyListener
in your code:
Replace
- Java
- Kotlin
@Override
public void onError() {}
override fun onError() {}
With
- Java
- Kotlin
@Override
public void onError(Throwable error) {}
override fun onError(error: Throwable?) {}
Welcome SDK Migration from V5.X.X to V5.8.0β
1. Update core-light dependencyβ
Replace
implementation 'com.incode.sdk:core-light:2.2.0'
With
implementation 'com.incode.sdk:core-light:2.3.0'
2. Face detector that detects faces on ID was moved to a new dependency.β
If any of the following methods are used,
- Java
- Kotlin
IdScan.Builder.setEnabledFrontShownAsBackCheck(true)
IdScan.Builder.setEnableBackShownAsFrontCheck(true)
IdScan.Builder.setEnabledFrontShownAsBackCheck(true)
IdScan.Builder.setEnableBackShownAsFrontCheck(true)
make sure to add the following line to your module-level app/build.gradle
implementation 'com.incode.sdk:model-id-face-detection:2.0.0'
3. Time unit for setting the maximum length of a video selfie recording changed from minutes to seconds.β
Replace:
- Java
- Kotlin
VideoSelfie.Builder.setMaxVideoLength(X)
VideoSelfie.Builder.setMaxVideoLength(X)
With:
- Java
- Kotlin
VideoSelfie.Builder.setMaxVideoLength(X * 60)
VideoSelfie.Builder.setMaxVideoLength(X * 60)
Welcome SDK Migration from V4.X.X to V5.0.0β
Removed APIsβ
The following APIs have been removed:
- Java
- Kotlin
createNewOnboardingSession()
setOnboardingSession()
createNewOnboardingSession()
setOnboardingSession()
Use this new API for both cases:
- Java
- Kotlin
// Use this API to resume existing session or to perform setup when using startOnboardingSection() API
setupOnboardingSession()
// Use this API to resume existing session or to perform setup when using startOnboardingSection() API
setupOnboardingSession()
Removed Configsβ
The following classes have been removed:
- Java
- Kotlin
OnboardingConfigV2
OnboardingFlowConfig
OnboardingConfigV2
OnboardingFlowConfig
Instead, you can use these:
- Java
- Kotlin
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
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:
- Java
- Kotlin
VideoSelfieListener.onVideoRecorded()
VideoSelfieListener.onVideoRecorded()
Instead, use this method:
- Java
- Kotlin
VideoSelfieListener.onVideoRecorded(VideoSelfieResult videoSelfieResult)
VideoSelfieListener.onVideoRecorded(videoSelfieResult: VideoSelfieResult)
Changed or renamed APIsβ
startOnboardingV2()β
The V2
has been removed from the API method and class names.
startOnboardingV2()
becomes startOnboarding
OnboardingListenerV2
becomes OnboardingListener
Use SessionConfig
and FlowConfig
instead of OnboardingConfigV2
.
- Java
- Kotlin
// Old
startOnboardingV2(Context context, OnboardingConfigV2 onboardingConfig, OnboardingListenerV2 onboardingListener)
// New
startOnboarding(Context context, SessionConfig sessionConfig, FlowConfig flowConfig, OnboardingListener onboardingListener)
// Old
startOnboardingV2(context: Context, onboardingConfig: OnboardingConfigV2, onboardingListener: OnboardingListenerV2)
// New
startOnboarding(context: Context, sessionConfig: SessionConfig, flowConfig: FlowConfig, onboardingListener: OnboardingListener)
startOnboardingSection()β
The argument interviewId
has been removed from the startOnboardingSection()
method.
interviewId
is set internally when setupOnboardingSession()
is called.
Make sure to call setupOnboardingSession()
prior to calling startOnboardingSection()
.
- Java
- Kotlin
// Old
startOnboardingSection(Context context, String interviewId, OnboardingFlowConfig onboardingFlowConfig, OnboardingListenerV2 onboardingListenerV2)
// New
startOnboardingSection(Context context, FlowConfig flowConfig, OnboardingListener onboardingListener)
// Old
startOnboardingSection(context: Context, interviewId: String, onboardingFlowConfig: OnboardingFlowConfig, onboardingListenerV2: OnboardingListenerV2)
// New
startOnboardingSection(context: Context, flowConfig: FlowConfig, onboardingListener: OnboardingListener)
Examples of how to use the new Configsβ
Example: Create a SessionConfig
:
- Java
- Kotlin
SessionConfig.Builder sessionConfigBuilder = new SessionConfig.Builder();
sessionConfigBuilder.setRegion(...);
sessionConfigBuilder.setConfigurationId(...);
sessionConfigBuilder.setCustomFields(...);
sessionConfigBuilder.setQueueName(...);
SessionConfig sessionConfig = sessionConfigBuilder.build();
val sessionConfigBuilder: SessionConfig.Builder = SessionConfig.Builder()
sessionConfigBuilder.setRegion(...)
sessionConfigBuilder.setConfigurationId(...)
sessionConfigBuilder.setCustomFields(...)
sessionConfigBuilder.setQueueName(..)
val sessionConfig: SessionConfig = sessionConfigBuilder.build()
Example: Create a FlowConfig
:
- Java
- Kotlin
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();
val flowConfigBuilder: FlowConfig.Builder = FlowConfig.Builder()
val intro: Intro = Intro.Builder()
.setIntroChecks(...)
.setAllowContinueWithoutConsent(...)
.build()
flowConfigBuilder.addIntro(intro)
flowConfigBuilder.addPhone()
val idScan: IdScan = IdScan.Builder()
.setShowIdTutorials(...)
.setWaitForTutorials(...)
.setEnableFrontShownAsBackCheck(...)
.build()
flowConfigBuilder.addID(idScan)
val flowConfig: FlowConfig = flowConfigBuilder.build()
Example: Create a CommonConfig
:
- Java
- Kotlin
CommonConfig commonConfig = new CommonConfig.Builder()
.setShowExitConfirmation(...)
.setShowCloseButton(...)
.setIdGlareThreshold(...)
.setIdBlurThreshold(...)
.build();
IncodeWelcome.getInstance().setCommonConfig(commonConfig);
val commonConfig: CommonConfig = CommonConfig.Builder()
.setShowExitConfirmation(...)
.setShowCloseButton(...)
.setIdGlareThreshold(...)
.setIdBlurThreshold(...)
.build()
IncodeWelcome.getInstance().setCommonConfig(commonConfig)
The following method has been removed in this release:
- Java
- Kotlin
OnboardingConfigV2.setShowReviewPhoto(boolean showReviewPhoto)
OnboardingConfigV2.setShowReviewPhoto(showReviewPhoto: Boolean)
Instead, use the following method in the IdScan
config builder:
- Java
- Kotlin
IdScan idScan = new IdScan.Builder()
...
.setShowRetakeScreen(boolean showRetakeScreen)
.build();
val idScan: IdScan = IdScan.Builder()
...
.setShowRetakeScreen(showRetakeScreen: Boolean)
.build()
Welcome SDK Migration from V4.X.X to V4.12.1β
The default value of waitForTutorials
has been changed from true
to false
for the following APIs:
- Java
- Kotlin
IdScan.Builder().setWaitForTutorials()
SelfieScan.Builder().setWaitForTutorials()
DocumentScan.Builder().setWaitForTutorials()
IdScan.Builder().setWaitForTutorials()
SelfieScan.Builder().setWaitForTutorials()
DocumentScan.Builder().setWaitForTutorials()
Welcome SDK Migration from V4.X.X to V4.10.0β
ProcessId.Builder() method was renamedβ
Replace:
- Java
- Kotlin
ProcessId.Builder().setEnableReferredToExecutiveScreen(boolean enable)...
ProcessId.Builder().setEnableReferredToExecutiveScreen(enable: Boolean)...
With:
- Java
- Kotlin
ProcessId.Builder().setEnableIdSummaryScreen(boolean enable)...
ProcessId.Builder().setEnableIdSummaryScreen(enable: Boolean)...
Welcome SDK Migration from 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 from 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()
Instead, use the following methods:
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 release:
IdValidationResult
Use following classes instead:
IdScanResult
IdProcessResult
Recommended usages for ID/Passport scanβ
Default usage for ID:
- Java
// 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:
- Java
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:
- Java
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:
- Java
// 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:
- Java
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:
- Java
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:
- Java
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:
- Java
IncodeWelcome#startOnboardingSection(@NonNull Context context,
@Nullable String interviewId,
@NonNull OnboardingFlowConfig onboardingFlowConfig,
@NonNull OnboardingListenerV2 onboardingListener)
Welcome SDK Migration from V3.3.0 to V3.4.0β
Deprecated APIsβ
The following methods have been deprecated and may be removed in a future release:
- Java
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 from 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:
- Java
IncodeWelcome#setOnboardingSession(OnboardingConfigV2 onboardingConfig,
String interviewId,
List<OnboardingValidationModule> onboardingValidationModules,
OnboardingSessionListener onboardingSessionListener)
IncodeWelcome#setOnboardingSession(OnboardingConfigV2 onboardingConfig,
String interviewId,
OnboardingSessionListener onboardingSessionListener)
Use this method instead:
- Java
IncodeWelcome#setOnboardingSession(OnboardingConfigV2 onboardingConfig,
OnboardingSessionListener onboardingSessionListener)
To pass the interviewId
, use OnboardingConfigV2.OnboardingConfigBuilderV2#setInterviewId(String interviewId)
method:
- Java
OnboardingConfigV2 onboardingConfig = new OnboardingConfigV2.OnboardingConfigBuilderV2().setInterviewId("customInterviewId").build();
And then call the IncodeWelcome#setOnboardingSession(OnboardingConfigV2, OnboardingSessionListener)
method:
- Java
IncodeWelcome.getInstance().setOnboardingSession(OnboardingConfigV2 onboardingConfig, OnboardingSessionListener onboardingSessionListener);
Welcome SDK Migration from V3.0.0 to V3.1.0β
Deprecated individual APIsβ
Replace
- Java
IncodeWelcome.getInstance().startModuleX(@NonNull Context context, @Nullable String interviewId, @NonNull ModuleXListener moduleXListener) {...
With
- Java
IncodeWelcome.getInstance().startOnboardingSection(this, interviewId, new OnboardingConfigV2.OnboardingConfigBuilderV2().setFlowTag("Module X section").addModuleX().build(), new OnboardingListenerV2() {...
Affected APIs:
- Java
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 approveListener) {...
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 from V2.x.x to V3.x.xβ
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 information or assistance.
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 the 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 from V2.9.x to V2.10.xβ
1. VideoSelfie deprecated APIs were removedβ
Replace
- Java
IncodeWelcome.getInstance().startVideoSelfie(@NonNull Context context, @Nullable String interviewId, boolean askForProofOfAddress, @NonNull VideoSelfieListener videoSelfieListener) {...
With
- Java
IncodeWelcome.getInstance().startVideoSelfie(@NonNull Context context, @Nullable String interviewId, @Nullable VideoSelfie videoSelfie, @NonNull VideoSelfieListener videoSelfieListener) {...
Replace
- Java
OnboardingConfigV2.OnboardingConfigBuilderV2().addVideoSelfie(boolean askForProofOfAddress)...
With
- Java
OnboardingConfigV2.OnboardingConfigBuilderV2().addVideoSelfie(VideoSelfie videoSelfie)...
2. VideoSelfie.Builder() method was renamedβ
Replace
- Java
VideoSelfie.Builder().setAskForProofOfAddress(boolean askForProofOfAddress)...
With
- Java
VideoSelfie.Builder().setDocumentScanEnabled(boolean isEnabled)...
Welcome SDK Migration from V2.8.x to V2.9.xβ
Face login feature changesβ
Face recognition in server mode now sends photos to the server (instead of locally generated template)
and the API was adapted accordingly: enableFaceLogin() was replaced with enableLocalFaceRecognition()
Replace
IncodeWelcome.Builder(...).enableFaceLogin(...)
With
- Java
IncodeWelcome.Builder(...).enableLocalFaceRecognition(...)
Welcome SDK Migration from 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 information is relevant if you are using the onboardingValidationModules
parameter.
If you are using null
as onboardingValidationModules
, you can ignore this step.
- Java
/**
* @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 the OnboardingValidationModule
enum:
- Java
/**
* 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 from V2.5.x to V2.6.xβ
Changes to IncodeWelcome.startFaceMatch()
β
Old method call:
- Java
IncodeWelcome.getInstance().startFaceMatch(OnboardingActivity.this, interviewId, spoofConfidence, selfieImagePath, new FaceMatchListener() { ...
Replace with:
- Java
IncodeWelcome.getInstance().startFaceMatch(OnboardingActivity.this, interviewId, new FaceMatch.Builder().build(), new FaceMatchListener() { ...
Welcome SDK Migration from V2.4.x to V2.5.xβ
1. Changes to ApproveListenerβ
Old listener:
- Java
void onApproveCompleted(boolean success);
Replace with:
- Java
void onApproveCompleted(ApproveResult approveResult);
The ApproveResult
object contains isSuccess()
and getUuid()
methods.
Instead of the 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 will need to provide the corresponding Lottie .json
files.
For more details, check Customization Guide
Welcome SDK Migration from V2.3.x to V2.4.xβ
Changes to Conference module configurationβ
'Queue' is no longer a parameter of the Conference module.
Instead, use the OnboardingConfigV2.OnboardingConfigBuilderV2().setQueueName(String queueName)
method.
If you had code similar to this:
- Java
builder.addConference(queueName);
Replace it with:
- Java
builder.addConference();
builder.setQueueName(queueName);
To create a custom config for Conference module, use the new Conference.Builder
class:
- Java
Conference conference = new Conference.Builder()
.setDisableMicOnCallStart(false)
.build();
And then add it to your OnboardingConfigV2.OnboardingConfigBuilderV2
using:
- Java
builder.addConference(conference);
Welcome SDK Migration from V2.3.4 to V2.3.5β
Moving ID auto capture timeout configuration to serverβ
Remove
- Java
IdScan.Builder().setIdAutoCaptureTimeout(timeout);
Timeout can now be set on the server through a REST API.
Welcome SDK Migration from V2.3.3 to V2.3.4β
If you are not using face authentication fetureβ
Remove any references to
- Java
IncodeWelcome.getInstance().downloadLibraries();
or
- Java
IncodeWelcome.getInstance().subscribeForLibrariesReady();
Welcome SDK Migration from V2.2.x to V2.3.xβ
1. If you are using Conference moduleβ
Add a new dependency:
implementation 'com.incode.sdk:conference:1.5.0'
2. Changes in callback methodsβ
Old:
- Java
public void onOnboardingSessionCreated(String token, String interviewId) {}
New:
- Java
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 from 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:
- Java
import com.incode.welcome_sdk.IncodeWelcome.UserScore;
import com.incode.welcome_sdk.IncodeWelcome.IDCaptureListener;
replace with:
- Java
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:
- Java
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:
- Java
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 the onError()
method:
- Java
@Override
public void onError() {}
with:
- Java
@Override
public void onError(Throwable error) {}
4. Delete onLicenseNotVerified() methodsβ
If you have implemented any instances of the onLicenseNotVerified()
method:
- Java
@Override
public void onLicenseNotVerified() {}
Just delete them.
This error will now be passed through common onError(Throwable error)
callbacks.
Welcome SDK Migration from V1 to V2.+ versionsβ
1. Gradle integrationβ
Update the com.incode.sdk:welcome
version to 2.1.6
and add a 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:
- Java
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
- Java
IncodeWelcome.getInstance().startOnboarding(context, onboardingConfig, onboardingListener);
with:
- Java
IncodeWelcome.getInstance().startOnboardingV2(context, onboardingConfigV2, onboardingListenerV2);
Provide IncodeWelcome.OnboardingListenerV2
to listen for updates and results throughout the flow.
See the full API Javadoc