1. Install the Gradle Plugin
To install the Preventor Android SDK, add the following to your project’s build.gradle
file:
Use minSdkVersion 23 in your build.gradle (Module:app)
Add implementation 'com.preventor:preventor_sdk:2.0.73-alpha'
to your dependencies.
Add repository depencencies in your build.gradle (Project Settings)
In your build.gradle (Project: app)
. Make sure you have the same version or higher "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10"
plugin.
In your gradle.properties (Project Properties)
add this line android.enableJetifier=true
A complete build.gradle
file should look similar to the example below.
Copy android {
// 1. Ensure you have hat least minSdkVersion 23
compileSdkVersion 32
defaultConfig {
applicationId "com.preventor.example"
minSdkVersion 23
targetSdkVersion 32
versionCode 1
versionName "1.0.0"
}
}
dependencies {
.. .
// 2. Add line here
implementation 'com.preventor:preventor_sdk:2.0.10-alpha'
}
Copy // 3.
repositories {
jcenter()
maven { url "https://jitpack.io" }
maven { url 'https://button.preventor.com/__android/v2' }
}
You have successfully installed the Preventor SDK!
2. Initialize the SDK
Initialize the SDK. See the coding example below:
Kotlin Java
Copy package com.preventor.example
// 1. Add import of Preventor SDK
import com.preventor.pvtidentityverification.PreventorSDK
class MainActivity : AppCompatActivity () {
override fun onCreate (savedInstanceState: Bundle ?) {
super . onCreate (savedInstanceState)
setContentView (R.layout.activity_main)
// 2. Set the context to parameters "activity" and "ViewModelStoreOwner"
val preventorSDK = PreventorSDK ( this , this )
}
}
Copy package com . preventor . example ;
// 1. Add import of Preventor SDK
import com . preventor . pvtidentityverification . PreventorSDK ;
public class MainActivity extends AppCompatActivity {
@ Override
protected void onCreate ( Bundle savedInstanceState) {
super . onCreate (savedInstanceState);
setContentView( R . layout . activity_main ) ;
// 2. Set the context to parameters "activity" and "ViewModelStoreOwner"
PreventorSDK preventorSDK = new PreventorSDK( this , this ) ;
}
}
You have successfully initialize the Preventor SDK!
3. Prefilling configs
To continue with the integration you need to set the prefill shown below. First you must obtain the config object by calling getConfig()
method.
kotlin Java
Copy package com.preventor.example
import com.preventor.pvtidentityverification.PreventorSDK
class MainActivity : AppCompatActivity () {
override fun onCreate (savedInstanceState: Bundle ?) {
super . onCreate (savedInstanceState)
setContentView (R.layout.activity_main)
val preventorSDK = PreventorSDK ( this , this )
// 1. GET CONFIG OBJECT
val config = preventorSDK. getConfig ()
}
}
Copy package com . preventor . example ;
import com . preventor . pvtidentityverification . PreventorSDK ;
public class MainActivity extends AppCompatActivity {
@ Override
protected void onCreate ( Bundle savedInstanceState) {
super . onCreate (savedInstanceState);
setContentView( R . layout . activity_main ) ;
PreventorSDK preventorSDK = new PreventorSDK( this , this ) ;
// 1. GET CONFIG OBJECT
Config config = preventorSDK . getConfig ();
}
}
Prefill Flowtype
The flow type defines the biometric process so you must select a flow type.
Kotlin Java
Copy package com.preventor.example
import com.preventor.pvtidentityverification.PreventorSDK
class MainActivity : AppCompatActivity () {
override fun onCreate (savedInstanceState: Bundle ?) {
super . onCreate (savedInstanceState)
setContentView (R.layout.activity_main)
preventorSDK = PreventorSDK ( this , this )
val config = preventorSDK. getConfig ()
// 1. SET THE FLOW TYPE
config.flowId = "YOUR_FLOW_ID"
}
}
Copy package com . preventor . example ;
import com . preventor . pvtidentityverification . PreventorSDK ;
public class MainActivity extends AppCompatActivity {
@ Override
protected void onCreate ( Bundle savedInstanceState) {
super . onCreate (savedInstanceState);
setContentView( R . layout . activity_main ) ;
PreventorSDK preventorSDK = new PreventorSDK( this , this ) ;
Config config = preventorSDK . getConfig ();
// 1. SET THE FLOW TYPE
config . setFlowId ( "YOUR_FLOW_ID" );
}
}
You must assign the flow type code. If it is blank, it will take the flow type by default.
Prefill Credentials
You must set all credentials values to correctly consume our services.
Kotlin Java
Copy package com.preventor.example
import com.preventor.pvtidentityverification.PreventorSDK
class MainActivity : AppCompatActivity () {
override fun onCreate (savedInstanceState: Bundle ?) {
super . onCreate (savedInstanceState)
setContentView (R.layout.activity_main)
preventorSDK = PreventorSDK ( this , this )
val config = preventorSDK. getConfig ()
config.flowId = "YOUR_FLOW_ID"
// 2. SET THE CREDENTIALS
config.credentials.apiKey = "YOUR_API_KEY"
config.credentials.clientSecret = "YOUR_CLIENT_SECRET"
config.credentials.tenant = "YOUR_TENANT"
config.credentials.banknu = "YOUR_BANKNU"
config.credentials.env = "YOUR_ENV"
}
}
Copy package com . preventor . example ;
import com . preventor . pvtidentityverification . PreventorSDK ;
public class MainActivity extends AppCompatActivity {
@ Override
protected void onCreate ( Bundle savedInstanceState) {
super . onCreate (savedInstanceState);
setContentView( R . layout . activity_main ) ;
PreventorSDK preventorSDK = new PreventorSDK( this , this ) ;
Config config = preventorSDK . getConfig ();
config . setFlowId ( "YOUR_FLOW_ID" );
// 2. SET THE CREDENTIALS
config . getCredentials () . setApiKey ( "YOUR_API_KEY" );
config . getCredentials () . setClientSecret ( "YOUR_CLIENT_SECRET" );
config . getCredentials () . setTenant ( "YOUR_TENANT" );
config . getCredentials () . setBanknu ( "YOUR_BANKNU" );
config . getCredentials () . setEnv ( "YOUR_ENV" );
}
}
Prefill Cif Code
The Cifcode is the unique customer profile code.
If the Cifcode is empty, a unique code is assigned.
Kotlin Java
Copy package com.preventor.example
import com.preventor.pvtidentityverification.PreventorSDK
class MainActivity : AppCompatActivity () {
override fun onCreate (savedInstanceState: Bundle ?) {
super . onCreate (savedInstanceState)
setContentView (R.layout.activity_main)
preventorSDK = PreventorSDK ( this , this )
val config = preventorSDK. getConfig ()
config.flowId = "YOUR_FLOW_ID"
config.credentials.apiKey = "YOUR_API_KEY"
config.credentials.clientSecret = "YOUR_CLIENT_SECRET"
config.credentials.tenant = "YOUR_TENANT"
config.credentials.banknu = "YOUR_BANKNU"
config.credentials.env = "YOUR_ENV"
// 3. SET THE CIF CODE
config.currentUserInfo.cifCode = "YOUR_CIFCODE"
}
}
Copy package com . preventor . example ;
import com . preventor . pvtidentityverification . PreventorSDK ;
public class MainActivity extends AppCompatActivity {
@ Override
protected void onCreate ( Bundle savedInstanceState) {
super . onCreate (savedInstanceState);
setContentView( R . layout . activity_main ) ;
PreventorSDK preventorSDK = new PreventorSDK( this , this ) ;
Config config = preventorSDK . getConfig ();
config . setFlowId ( "YOUR_FLOW_ID" );
config . getCredentials () . setApiKey ( "YOUR_API_KEY" );
config . getCredentials () . setClientSecret ( "YOUR_CLIENT_SECRET" );
config . getCredentials () . setTenant ( "YOUR_TENANT" );
config . getCredentials () . setBanknu ( "YOUR_BANKNU" );
config . getCredentials () . setEnv ( "YOUR_ENV" );
// 3. SET THE CIF CODE
config . getCurrentUserInfo () . setCifCode ( "YOUR_CIFCODE" );
}
}
Prefill Title App Bar
Define an app title that indicates the process to be performed.
Kotlin Java
Copy preventorSDK. setTitleAppBar ( "YOUR_TITLE_APP_BAR" )
Copy preventorSDK . setTitleAppBar ( "YOUR_TITLE_APP_BAR" )
4. Start the Verification
To start a new verification, you first need to create the preventor verification button.
Add Button in your XML
Copy < com.preventor.pvtidentityverification.widgets.PreventorButton
android : id = "@+id/identityVerificationButton"
android : layout_width = "161dp"
android : layout_height = "wrap_content"
android : layout_centerInParent = "true" />
Start Verification
To start a verification, prepare the following:
Add the reference to verification button.
Call initialize()
method to start the preventorSDK.
Call validateApiKey()
method to start the verification.
Kotlin Java
Copy // 1. Add verification button reference.
val identityVerificationButton = findViewById < PreventorButton >(R.id.identityVerificationButton)
// 2. Call initialize() method.
preventorSDK. initialize ()
// 3. Call validateApiKey() method.
identityVerificationButton. setOnClickListener {
preventorSDK. validateApiKey ()
}
Copy // 1. Add verification button reference.
PreventorButton identityVerificationButton = findViewById( R . id . identityVerificationButton ) ;
// 2. Call initialize() method.
preventorSDK . initialize ();
// 3. Call validateApiKey() method.
identityVerificationButton . setOnClickListener ( new View . OnClickListener () {
@ Override
public void onClick( View v) {
preventorSDK . validateApiKey ();
}
});
To start verification you can also use this call validateApiKey()
anywhere in your code when all necessary resources have already been completed.
5. Handling Verifications
To find out if a user has completed the verification process, canceled it or there was an error. To do this, you can implement the following delegate / callback methods:
Should look similar to the example below.
Kotlin Java
Copy preventorSDK. callback ( object : PreventorSDKListener {
override fun onStart () {
println ( "MainActivity onStart" );
}
override fun onFinish (ticked: Ticked ) {
println ( "MainActivity onFinish" );
}
override fun onError (error: String ) {
println ( "MainActivity onError: $error" );
}
override fun onSubmitted (ticked: Ticked ) {
println ( "MainActivity onSubmitted" );
}
override fun onNextStep () {
println ( "MainActivity onNextStep" );
}
override fun onComplete () {
println ( "MainActivity onComplete" );
}
})
Copy preventorSDK . callback ( new PreventorSDKListener() {
@ Override
public void onStart () {
System . out . println ( "MainActivity onStart" );
}
@ Override
public void onFinish ( Ticked ticked) {
System . out . println ( "MainActivity onFinish" );
}
@ Override
public void onError (@ NonNull String error) {
System . out . println ( "MainActivity onError: " + error);
}
@ Override
public void onSubmitted ( Ticked ticked) {
System . out . println ( "MainActivity onSubmitted" );
}
@ Override
public void onNextStep ( Ticked ticked) {
System . out . println ( "MainActivity onNextStep" );
}
@ Override
public void onComplete ( Ticked ticked) {
System . out . println ( "MainActivity onComplete" );
}
});
When the verification is finished it will return a ticked object in which you can see the results of the verification. Within them take as reference cifcode, ticketId, flowStatus, dispositionStatus.
When the ticket ends in the following combinations, flowStatus and dispositionStatus respectively:
6. Example project
See the example project below:
https://github.com/preventorid/button-android-sdk-app/tree/main