Getting Started

Incode Onboarding provides effortless onboarding where security matters.
Incode Onboarding is part of Incode Omnichannel Biometric Identity Platform, that is powered by Incode's world-class Face Recognition, Liveness detection and ID Validation models.

Variant Explanation

The SDK is distributed in several variants. You select a variant by pointing the ref field in your pubspec.yaml at the matching release branch (see Installation):

  • Standard — The default variant. No modifier.
  • -vc - Use this variant if you need to stream the camera feed during Selfie and/or ID scan.
  • -nfc - Use this variant if you need NFC scanning (reading data from a passport or ID chip).
  • -l - Use this variant if you need to manipulate locally stored identities (used for 1:N FaceAuthMode.local Face Login). See the API Reference for details.

Environment Setup

Requirements

  • Minimum recommended Flutter version: 3.16

Earlier Flutter versions require manual migration to align with modern Android build toolchain requirements (AGP 8.6+, Gradle 8.7+, compileSdk 35).

Installation

onboarding_flutter_wrapper:
  git:
    url: [email protected]:Incode-Technologies-Example-Repos/FlutterSampleApp.git
    ref: release/[VERSION]

If you need a variant that supports streaming the camera feed during Selfie and/or ID scan, please use the following option instead:

onboarding_flutter_wrapper:
  git:
    url: [email protected]:Incode-Technologies-Example-Repos/FlutterSampleApp.git
    ref: release/[VERSION]-vc

If you need a variant that supports NFC scanning (reading data from a passport or ID chip) please use the following option instead:

onboarding_flutter_wrapper:
  git:
    url: [email protected]:Incode-Technologies-Example-Repos/FlutterSampleApp.git
    ref: release/[VERSION]-nfc

And if you need a variant that supports manipulation of locally stored identities please use the following option instead:

onboarding_flutter_wrapper:
  git:
    url: [email protected]:Incode-Technologies-Example-Repos/FlutterSampleApp.git
    ref: release/[VERSION]-l

Replace [VERSION] in the ref field with the latest release branch name e.g release/4.18.0
To use a version older than the latest one, replace [VERSION] in the ref field with the specific release branch, e.g., release/4.2.0.

Updating to latest version

Run flutter pub upgrade or flutter packages upgrade, and in case iOS SDK version was updated run pod install --repo-update and pod update IncdOnboarding inside your ios folder.

SDK Modes

You can choose between two modes: SdkMode.standard and SdkMode.captureOnly. SdkMode.standard is the default, but if you would like to skip image upload and server validations for id and selfie scan you can specify captureOnly mode using method:

IncodeOnboardingSdk.setSdkMode(sdkMode: SdkMode.captureOnly);

Additional Setup Instructions

Additional setup for iOS

After installation, it's necessary to do the linking for the iOS, after running the command above.

  1. Change your Podfile inside ios folder so it requires deployment target 13 or higher.

    -platform :ios, '11.0'
    +platform :ios, '13.0'
  2. Run pod install within the ios folder:

    pod install
  3. Adapt Info.plist by adding mandatory permission related entries depending on the modules you need:

  • For camera modules like IdScan, SelfieScan, DocumentScan or VideoSelfie the NSCameraUsageDesscription is mandatory.
  • Geolocation module requires NSLocationWhenInUseUsageDescription
  • VideoSelfie module and its voice consent step requires NSMicrophoneUsageDescription

Additional setup for Android

  1. Modify app/build.gradle so that you enable multiDexEnabled and set the minimum API level to 23 (24 if using the video streaming dependency):

    defaultConfig {
      …
      multiDexEnabled true
      minSdkVersion 23
    }
  2. Modify your project's build.gradle so it contains the GitHub Packages repository with credentials provided by Incode.

    allprojects {
      repositories {
        ...
    +    maven { url "https://jitpack.io" }
    +    maven {
    +      url = uri("https://maven.pkg.github.com/Incode-Technologies-Example-Repos/android-omni-packages")
    +      credentials {
    +        username = "incode-customers"
    +        password = "GITHUB_TOKEN"
    +      }
    +    }
        ...
      }
    }

    Additionally, if you're explicitly setting kotlin-gradle-plugin version make sure kotlin version is set to 1.9.0:

    buildscript {
    +    ext.kotlin_version = '1.9.0'
       ///
    
        dependencies {
            ...
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
  3. Optionally, modify your app/build.gradle to add dependencies depending on the features you want to use. Optional dependencies can be added for optimized Face Login features:

    • Add com.incode.sdk:model-liveness-detection:[VERSION] to use local liveness by specifying .local FaceAuthMode for face login.
    • Add com.incode.sdk:model-face-recognition:[VERSION] to use local face recognition by specifying .local FaceAuthMode for face login.

Running the example app

To run the example app, follow these steps:

  1. Navigate to root of the example folder. Create .env file. The file is added in .gitignore so it won't be pushed to the repository. It is used to store your own credentials. Example of the .env file content:

    API_URL=YOUR_API_URL
    API_KEY=YOUR_API_KEY
    COMBINED_CONSENT_ID=YOUR_COMBINED_CONSENT_ID
    WORKFLOW_CONFIGURATION_ID=YOUR_WORKFLOW_CONFIGURATION_ID
    FLOW_CONFIGURATION_ID=YOUR_FLOW_CONFIGURATION_ID
    DEEP_LINK=YOUR_DEEP_LINK
    E2EE_URL=YOUR_E2EE_URL
  2. Run flutter pub get to install dependencies.

  3. Run the following commands to generate corresponding files for those env values:

      flutter pub run build_runner clean
      flutter pub run build_runner build --delete-conflicting-outputs
  4. The mandatory values to run the app properly are apiKey and apiUrl. Replace the other values in home.dart based on your needs.

  5. Run the app.