Mobile SDK PoC
In order to make a fast PoC check the following points.
1. Installation and initial Setup
Add the SDK dependency to your project, and setup your IDLE as follows
Our config
minSdkVersion = 21
targetSdkVersion = 30
compileSdkVersion = 30
gradleVersion = 4.1.2
kotlinVersion = 1.6.21
Add the following code to your maven for import the AliceOnboarding library.
repositories {
mavenCentral()
maven { url "https://europe-west1-maven.pkg.dev/alice-cloud/maven" }
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.alicebiometrics.onboarding:AliceOnboarding:+'
}
Add the following code yo your podfile.
pod 'AliceOnboarding'
pod repo update
pod install
Import your library
import AliceOnboarding
2. Permissions
Alice Onboarding needs guaranteed camera permissions in order to function properly.
<uses-permission android:name="android.permission.CAMERA" />
Camera Permission is mandatory
Please check the Apple Documentation
3. Authentication
For trial purposes you will be able to test AliceOnboarding with the trial token available in your Credential's section of the Dashboard The TrialAuthenticator service will use the input email as unique identifyer.
An email parameter in UserInfo is required to associate it to an Alice Onboarding user_id
val trialToken = "<ADD-YOUR-TRIAL-TOKEN-HERE>"
val userInfo = UserInfo(email = email, // required
firstName = firstName, // optional
lastName = lastName) // optional
//Initialize your SDK to use the Sandbox Environment
Onboarding.setEnvironment(Environment.SANDBOX)
//This class is only available/needed in Sandbox Environment.
//In the production environment you must implement the Authentication based on Tokens.
val authenticator = TrialAuthenticator(trialToken = trialToken, userInfo = userInfo)
authenticator.execute { response ->
when (response) {
is Response.Success -> {
// Configure Alice Onboarding with the OnboardingConfig
// Then Run the Alice Onboarding Flow
// The userToken is contained on the response.message
}
is Response.Failure -> {
// Inform the user about Authentication Errors
}
}
}
let trialToken = "<ADD-YOUR-TRIAL-TOKEN-HERE>"
let userInfo = UserInfo(email: email, // required
firstName: firstName, // optional
lastName: lastName) // optional
//Initialize your SDK to use the Sandbox Environment
Onboarding.setEnvironment(.sandbox)
//This class is only available/needed in Sandbox Environment.
//In the production environment you must implement the Authentication based on Tokens.
let authenticator = TrialAuthenticator(trialToken: trialToken, userInfo: userInfo)
authenticator.execute { result in
switch result {
case .success(let userToken):
// Configure Alice Onboarding with the OnboardingConfig
// Then Run the Alice Onboarding Flow
case .failure(let error):
// Inform the user about Authentication Errors
}
}
4. Config your Alice Onboarding
You can configure the Onboarding for requesting different types of documents, selfies, etc...
Following you can find a snippet with an example.
val userToken = "<ADD-YOUR-USER-TOKEN-HERE>"
val config = OnboardingConfig.builder()
.withUserToken(userToken)
.withAddSelfieStage()
.withAddDocumentStage(type = DocumentType.IDCARD, issuingCountry = "ESP")
.withAddDocumentStage(type = DocumentType.DRIVERLICENSE, issuingCountry = "ESP")
.withAddOtherTrustedDocumentStage(title = "Proof of address")
config = try! config.withAddSelfieStage()
config = try! config.withAddDocumentStage(
ofType: .idcard,
issuingCountry: "ESP",
documentStageConfig: documentStageConfig
)
config = try! config.withAddDocumentStage(
ofType: .driverlicense,
issuingCountry: "ESP",
documentStageConfig: documentStageConfig
)
5. Run Alice Onboarding
Once you configured the Alice Onboarding Flow, you can run the process as follows
// this = Activity context
val onboarding = Onboarding(this, config = config)
onboarding.run(ONBOARDING_REQUEST_CODE)
...
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == ONBOARDING_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
val userInfo = data!!.getStringExtra("userStatus")
} else if (resultCode == Activity.RESULT_CANCELED) {
}
}
}
// self = ViewController context
let onboarding = Onboarding(self, config: config)
onboarding.run { result in
switch result {
case let .success(userStatus):
print("userStatus: \(String(describing: userStatus))")
case let .failure(error):
print("failure: \(error.localizedDescription)")
case .cancel:
print("User has cancelled the onboarding")
case .dismissButton:
print("Dismiss pressed")
@unknown default:
print("Uncontrolled exception")
}
}