Flutter Guide for integrating Kvalifika SDK into a Flutter project
Before integrating Kvalifika, it is recommended to follow the steps described in Integration Guide and Initial Setup .
Naming of the properties and functions might be slightly modified depending on the version.
Package Installation
Kvalifika SDK should be integrated into the existing Flutter project (more information regarding creating Flutter projects is here: Flutter - Get Started )
At the root level of your project, find the pubspec.yaml file and add the following line in the dependencies section:
Copy dependencies :
kvalifika_sdk : ^ 0.12 . 1
iOS Specific Steps
If there is no Podfile in ios
folder, run flutter build ios
in the terminal of the project folder.
Add sources to Podfile and use minimum iOS version 11.0.
Copy source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Kvalifika/kvalifika-cocoapods-specs.git'
source 'https://github.com/Kvalifika/zoom-cocoapods-specs.git'
platform : ios, '11.0'
Then navigate to ios
folder and run pod install
.
pod install might take long time!
Please add the following permissions to your app's Info.plist
, so that the Kvalifika iOS SDK can access a user's camera to run a verification. You can do this in the property list view or by code. Right-click on Info.plist
and select Open As
-> Source Code
. Add the lines below somewhere inside the following code:
Copy <!-- permission strings to be include in info.plist -->
<key>NSCameraUsageDescription</key>
<string>Please give us access to your camera, to complete the verification.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Please give us access to your photo library to verify you.</string>
Android Specific Steps
Open android/app/build.gradle
file and set minSdkVersion
to 21 .
Copy android {
...
defaultConfig {
...
minSdkVersion 21
...
}
...
}
Initialize the SDK
To initialize Kvalifika SDK, it first should be imported:
Copy import 'package:kvalifika_sdk/kvalifika_sdk.dart' ;
After this, it is needed to initialize SDK with your appId:
appId is Application ID, generated from Admin Panel. See Initial Setup for details.
Copy class MyApp extends StatefulWidget {
@override
_MyAppState createState () => _MyAppState ();
}
class _MyAppState extends State < MyApp > {
@override
void initState () {
super. initState ();
}
@override
Widget build ( BuildContext context) {
return MaterialApp (
home : Scaffold (
appBar : AppBar (
title : const Text ( 'Kvalifika' ),
),
body : KvalifikaSdk (
appId : "YOUR APP ID" ,
locale : KvalifikaSdkLocale . EN ,
builder : (context, sdk) => Center (
child : ElevatedButton (
onPressed : () {
sdk. startSession ();
},
child : Text ( 'Start Verification' ),
),
),
),
),
);
}
}
Start Verification
Call sdk.startSession()
on button click:
Copy class MyApp extends StatefulWidget {
@override
_MyAppState createState () => _MyAppState ();
}
class _MyAppState extends State < MyApp > {
@override
void initState () {
super. initState ();
}
@override
Widget build ( BuildContext context) {
return MaterialApp (
home : Scaffold (
appBar : AppBar (
title : const Text ( 'Kvalifika' ),
),
body : KvalifikaSdk (
appId : "YOUR APP ID" ,
locale : KvalifikaSdkLocale . EN ,
builder : (context, sdk) => Center (
child : ElevatedButton (
onPressed : () {
// Start session on button press
sdk. startSession ();
},
child : Text ( 'Start Verification' ),
),
),
),
),
);
}
}
Handling Verifications
It's useful to know that if a user has completed the verification flow or canceled it. For this, you can implement the callback methods:
Callback Methods
Copy KvalifikaSdk (
appId : "YOUR APP ID" ,
onInitialize : (context, sdk) {
// Start session after initialization
sdk. startSession ();
},
onStart : (context, sessionId) {
},
onFinish : (context, sessionId) {
// Fetch session data from your backend server here
},
onError : (context, error, message) {
if (error == KvalifikaSdkError . INVALID_APP_ID ) {
}
if (error == KvalifikaSdkError . USER_CANCELLED ) {
}
if (error == KvalifikaSdkError . TIMEOUT ) {
}
if (error == KvalifikaSdkError . USER_CANCELLED ) {
}
if (error == KvalifikaSdkError . SESSION_UNSUCCESSFUL ) {
}
if (error == KvalifikaSdkError . ID_UNSUCCESSFUL ) {
}
if (error == KvalifikaSdkError . CAMERA_PERMISSION_DENIED ) {
}
if (error == KvalifikaSdkError . LANDSCAPE_MODE_NOT_ALLOWED ) {
}
if (error == KvalifikaSdkError . REVERSE_PORTRAIT_NOT_ALLOWED ) {
}
if (error == KvalifikaSdkError . FACE_IMAGES_UPLOAD_FAILED ) {
}
if (error == KvalifikaSdkError . DOCUMENT_IMAGES_UPLOAD_FAILED ) {
}
if (error == KvalifikaSdkError . UNKNOWN_INTERNAL_ERROR ) {
}
},
builder : (context, sdk) => Center (
child : ElevatedButton (
onPressed : () {
sdk. startSession ();
},
child : Text ( 'Start Verification' ),
),
),
)
Error Codes
UI Customizations
Appearance
It is possible to customize logo and icons for the application.
In Flutter we need to add the images in android
and ios
subfolders in the project directory.
Open android
subfolder in Android Studio and drag the image to res/drawable
folder.
Open ios
subfolder in XCode. Open Assets.xcassets
folder and drag the image.
An image name in android
and ios
subfolders must match.
Copy KvalifikaSdk (
appId : "YOUR APP ID" ,
logo : "logo" ,
documentIcon : "document_icon" ,
cancelIcon : "cancel_icon" ,
activeFlashIcon : "active_flash_icon" ,
inactiveFlashIcon : "inactive_flash_icon" ,
builder : (context, sdk) => Center (
child : ElevatedButton (
onPressed : () {
sdk. startSession ();
},
child : Text ( 'Start Verification' ),
),
),
)
Language
It is possible to set locale when initializing SDK. Supported locales are:
Copy KvalifikaSdk (
appId : "YOUR APP ID" ,
locale : KvalifikaSdkLocale . EN
)
Development Mode
Without specifying mode SDK uses https://api.kvalifika.com
With development mode ON SDK uses https://apistaging.kvalifika.com
Copy KvalifikaSdk(
appId: "YOUR APP ID",
development: true
)
ProGuard (Android)
If ProGuard is used in Android release build, it is possible to add the following options to ProGuard file:
Copy - keep class com.facetec.sdk. ** { * ; }