Skip to main content

Getting started with Android SDK

important

The SDK supports API Level 24 and above.

iDenfy identity verification flow

note

Below you can check a full regular flow.

This flow can be customized and success results can be omitted as well. We recommend omitting them using our immediate redirect feature.

Full flow

Obtaining verification token

The SDK requires verification token for starting initialization. Look at verification token generation guide.

Adding the SDK dependency

In the root level's (project module) Gradle add the following implementation:

repositories {
maven { url 'https://developer.huawei.com/repo/' }
maven { url 'https://jitpack.io' }
}

In the app level's Gradle add following implementation with the latest version. The latest version is accessible from the changelog.

repositories {
dependencies {
implementation 'com.github.idenfy:sdk-api:8.6.3'
}
}
note

If you are not overriding any custom views or applying customization, you can use the dynamic version. If you did make layout changes, don't use dynamic version, since runtime crashes can occur. If you understand the disadvantages and still want to use the latest version integrate the SDK in the following way:

repositories {
dependencies {
implementation 'com.github.idenfy:sdk-api:+'
}
}

Android studio configuration

Our SDK uses Java 11. Double check the version if it was not already provided:

    compileOptions {
targetCompatibility 11
sourceCompatibility 11
}
kotlinOptions {
jvmTarget = "11"
}

Also make sure that you have these lines in gradle.properties file:

android.useAndroidX=true
android.enableJetifier=true

Configuring SDK

It is required to provide following configuration:

val idenfySettingsV2 = IdenfySettingsV2.IdenfyBuilderV2()
.withAuthToken("AUTH_TOKEN")
.build()

Presenting Activity

An instance of IdenfyController is required for starting a verification flow.

IdenfyController.getInstance().initializeIdenfySDKV2WithManual(
this,
identificationResultsCallback,
idenfySettingsV2
)

Receiving callbacks from SDK

Verification results callback is returned using Activity Result Contract, that is passed during initialization of the SDK.

The SDK provides the following callback class idenfyIdentificationResult.

important

If your service uses only the automatic (default) callback, then you should only check the idenfyIdentificationResult.autoIdentificationStatus.

important

Since version 7.1.0, we have added a SUSPECTED response. You can read about it here and decide for yourself if you would like for it to impact your UI.

    var identificationResultsCallback = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result: ActivityResult ->
val resultCode = result.resultCode
val data = result.data

if (resultCode == IdenfyController.IDENFY_IDENTIFICATION_RESULT_CODE) {
val idenfyIdentificationResult: IdenfyIdentificationResult = data!!.getParcelableExtra(
IdenfyController.IDENFY_IDENTIFICATION_RESULT
)!!
when (idenfyIdentificationResult.manualIdentificationStatus) {
ManualIdentificationStatus.APPROVED -> {
//The user completed a verification flow, was verified manually and the verification status, provided by a manual reviewer, is APPROVED.
}
ManualIdentificationStatus.FAILED -> {
//The user completed a verification flow, was verified manually and the verification status, provided by a manual reviewer, is FAILED.
}
ManualIdentificationStatus.WAITING -> {
//The user was only verified by an automated platform, not by a manual reviewer.
}
ManualIdentificationStatus.INACTIVE -> {
//The user was only verified by an automated platform and still waiting for manual reviewing.
}
}
when (idenfyIdentificationResult.autoIdentificationStatus) {
AutoIdentificationStatus.APPROVED -> {
//The user completed a verification flow and the verification status, provided by an automated platform, is APPROVED.
}
AutoIdentificationStatus.FAILED -> {
//The user completed a verification flow and the verification status, provided by an automated platform, is FAILED.
}
AutoIdentificationStatus.UNVERIFIED -> {
//The user did not complete a verification flow and the verification status, provided by an automated platform, is UNVERIFIED.
}
}
Toast.makeText(
this@MainActivity,
"Auto - ${idenfyIdentificationResult.autoIdentificationStatus} \n" +
"Manual - ${idenfyIdentificationResult.manualIdentificationStatus} \n",
Toast.LENGTH_LONG
).show()
}
}

Kotlin

Information about the IdenfyIdentificationResult autoIdentificationStatus statuses:

NameDescription
APPROVEDThe user completed a verification flow and the verification status, provided by an automated platform, is APPROVED.
FAILEDThe user completed a verification flow and the verification status, provided by an automated platform, is FAILED.
UNVERIFIEDThe user did not complete a verification flow and the verification status, provided by an automated platform, is UNVERIFIED.

Information about the IdenfyIdentificationResult manualIdentificationStatus statuses:

NameDescription
APPROVEDThe user completed a verification flow and was verified manually while waiting for the manual verification results in the iDenfy SDK. The verification status, provided by a manual review, is APPROVED.
FAILEDThe user completed a verification flow and was verified manually while waiting for the manual verification results in the iDenfy SDK. The verification status, provided by a manual review, is FAILED.
WAITINGThe user completed a verification flow and started waiting for the manual verification results in the iDenfy SDK. Then he/she decided to stop waiting and pressed a "BACK TO ACCOUNT" button. The manual verification review is still ongoing.
INACTIVEThe user was only verified by an automated platform, not by a manual reviewer. The verification performed by the user can still be verified by the manual review if your system uses the manual verification service.
caution

The manualIdentificationStatus status always returns INACTIVE status, unless your system implemented manual verification flow (11 step). This is how our own manual verification screen looks like:

Manual verification screen

In order to disable it, refer to the immediate redirect feature.

note

These SDK statuses are the same as iFrame integration statuses. There is just a single difference that the SDK returns INACTIVE if the manual verification screen was not opened during the verification session instead of returning null, as iFrame does. Also, iFrame does not close automatically since it can deliver results without actually closing itself.

note

After SDK finishes and closes itself, you will also receive webhook callback to your backend system.

It might be useful to completely ignore the SDK status and communicate between your app and your backend service about verification status.

Samples

SDK Integration tutorials

Our sample application demonstrates the integration of iDenfy SDK. For more information visit SDK integration tutorials.

FAQ

1. Is there a possibility to change verification results view?

2. How to change the position of the top titles?

3. How do I report an issue within the SDK?

  • Please report any issue via Jira customer portal. Please attach versions of SDK, Gradle you are using, describe the problem as much detailed as possible.

4. When I override liveness fonts, the size does not change. Why is that?

  • Liveness font size is dynamically determined according to the screen resolution, and it cannot be manually changed.