Migration Guide

Migration to 9.3.0

  • Update Android minSdkVersion in you Android projects's build.gradle:
  buildscript {
    ext {
-    minSdkVersion = 21
+    minSdkVersion = 23
    }
  }

Remove com.incode.sdk:camera:1.1.0 dependency in your app’s build.gradle file:

  dependencies {
-    implementation 'com.incode.sdk:camera:1.1.0'
  }

For Expo integrations, update your app.json:

{
  "expo": {
    "plugins": [
      [
        {
- "addCamera": "1.1.0"
        }
      ]
    ]
  }
}

If you are using NFC variant of the SDK follow the steps below to enable NFC scanning on iOS:

  1. Turn on Near Field Communication Tag Reading under the Capabilities tab for the project’s target. This step:

    • Adds the NFC tag-reading feature to the App ID.
    • Adds the Near Field Communication Tag Reader Session Formats Entitlement to the entitlements file.
  2. Add the NFCReaderUsageDescription key as a string item to the Info.plist file. For the value, enter a string that describes the reason the app needs access to the device’s NFC reader. If the app attempts to read a tag without providing this key and string, the app will crash.

  3. Add interface for interacting with an ISO 7816 tag to App's Info.plist:

<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
   <array>
      <string>A0000002471001</string>
      <string>A0000002472001</string>
      <string>00000000000000</string>
   </array>

NOTE
If your app supports devices with iOS prior to 13.0, you will also need to set CoreNFC.framework and CryptoTokenKit.framework as an optional frameworks:

Select your app target
Under Build Phases -> Link Binary With Libraries add: CoreNFC.framework, CryptoTokenKit.framework and SwiftUI.framework libraries if they are already not on the list. And finally, for all three libraries, under Status, select Optional. Note that even though NFC Scan module will not be performed on devices with iOS version older than 13, these steps are required because otherwise the app will crash on launch time.

If you are using Expo with the NFC variant, in order for it to work on Android it is necessary to:

  • Bump expo-incode-sdk-configuration version to 1.1.4 in package.json.
  {
  "dependencies": {
-   "@incode-sdks/expo-incode-sdk-configuration": "1.1.3"
+   "@incode-sdks/expo-incode-sdk-configuration": "1.1.4"
  }
}  
  • Add addNfc plugin in app.json.
"plugins": [
  [
    "@incode-sdks/expo-incode-sdk-configuration",
    {
      "artifactoryUserName": "client_artifactory_username",
      "artifactoryPassword": "client_artifactory_password",
      "addIncodeSourceToPodfile": true,
      "cameraUsageDescription": "The SDK uses the camera in order to verify the identity of the customer, e.g. in ID scan, Selfie scan and so on.",
      "locationWhenInUseUsageDescription": "The SDK uses the current user location in order to detect exact location for Geolocation step.",
      "microphoneUsageDescription": "The SDK uses microphone for performing a video call during Video Conference step or for doing speech recognition during Video Selfie.",
+     "addNfc": "1.3.5"
    }
  ]
]

Migration to 9.1.0

To enable the new ID capture experience on Android, add the com.incode.sdk:camera:1.1.0 dependency to your app’s build.gradle file:

  dependencies {
+    implementation 'com.incode.sdk:camera:1.1.0'
  }

For Expo integrations, update your app.json to enable the new ID capture experience:

{
  "expo": {
    "plugins": [
      [
        {
+ "addCamera": "1.1.0"
        }
      ]
    ]
  }
}

Migration to 9.0.0

  • RN SDK is now delivered in multiple versions:
    9.0.0: Standard version 9.0.0-vc: Includes streaming 9.0.0-e2ee: Includes end-to-end encryption
  • Remove Android com.incode.sdk:core-light dependency in your app's build.gradle:
    dependencies { implementation 'com.incode.sdk:core-light:2.6.4' }
  • Add these lines to the Podfile:
    source 'https://cdn.cocoapods.org/' source '[email protected]:Incode-Technologies-Example-Repos/IncdDistributionPodspecs.git' If you don't have access to the Incode's GitHub repo and SSH setup on the machine, please contact your Incode representative for support.
  • For Expo integrations minimum 1.1.2 expo configuration plugin is required:
    "@incode-sdks/expo-incode-sdk-configuration": "1.1.2"

*Only for Expo integrations - Update app.json and remove coreLightVersionparam.

Migration to 8.1.0

  • The requirement for a minimum supported React Native version of 0.74 has been removed. You can now use this library with earlier versions of React Native, as long as they meet other necessary dependencies.

Migration to 8.0.0

  • The minimum supported React Native version is 0.74 due to the requirements of compileSdk 34 and classpath("org.jetbrains.kotlin:kotlin-gradle-plugin"). Please upgrade your project to React Native version 0.74 or higher to ensure compatibility.

  • Update Android dependency in you app's build.gradle:

  dependencies {
-    implementation 'com.incode.sdk:core-light:2.6.3'
+    implementation 'com.incode.sdk:core-light:2.6.4'
  }
  • Update compileSdk version to 34:
  android {
-    compileSdk 33
+    compileSdk 34
  }
  • Expo integration. Update plugins field in app.json:
 "plugins": [
      [
        "@incode-sdks/expo-incode-sdk-configuration",
        {
-    "coreLightVersion": "2.6.3"
+    "coreLightVersion": "2.6.4"
        }
      ]
   ]

Migration to 6.4.0

  • Update Android dependency in you app's build.gradle:
  dependencies {
-    implementation 'com.incode.sdk:core-light:2.6.2'
+    implementation 'com.incode.sdk:core-light:2.6.3'
  }
  • Expo integration. Update plugins field in app.json:
 "plugins": [
      [
        "@incode-sdks/expo-incode-sdk-configuration",
        {
-    "coreLightVersion": "2.6.2"
+    "coreLightVersion": "2.6.3"
        }
      ]
   ]

Migration to 6.2.0

  • Update Android dependency in you app's build.gradle:
  dependencies {
-    implementation 'com.incode.sdk:core-light:2.6.1'
+    implementation 'com.incode.sdk:core-light:2.6.2'
  }
  • Expo integration. Update plugins field in app.json:
 "plugins": [
      [
        "@incode-sdks/expo-incode-sdk-configuration",
        {
-    "coreLightVersion": "2.6.1"
+    "coreLightVersion": "2.6.2"
        }
      ]
   ]

Migration to 6.1.0

  • Expo integration. Update plugins field in app.json:
 "plugins": [
      [
        "@incode-sdks/expo-incode-sdk-configuration",
        {
+    "coreLightVersion": "2.6.1"
        }
      ]
   ]

Migration to 6.0.0

  • Update Incode SDK dependency in package.json:
  "dependencies": {
-    "react-native-incode-sdk": "https://sdk-js.s3.amazonaws.com/react-native/react-native-incode-sdk-5.6.0-nvc.tgz"
+    "@incode-sdks/react-native-incode-sdk": "^6.0.0"
  }
  • Update Podfile:

If RN >= 0.69 remove this line:

-   pod 'react-native-incode-sdk', :path => '../node_modules/react-native-incode-sdk/'

If RN < 0.69 update this line:

-    pod 'react-native-incode-sdk', :path => '../node_modules/react-native-incode-sdk/'
+    pod 'react-native-incode-sdk', :path => '../node_modules/@incode-sdks/react-native-incode-sdk/'
  • Update App.js:
-   import IncodeSdk from 'react-native-incode-sdk';
+   import IncodeSdk from '@incode-sdks/react-native-incode-sdk';
  • Update Android dependency in you app's build.gradle:
  dependencies {
-    implementation 'com.incode.sdk:core-light:2.5.1
+    implementation 'com.incode.sdk:core-light:2.6.1'
  }

Migration to 5.6.1

  • Update Android dependency in you app's build.gradle:
  dependencies {
-    implementation 'com.incode.sdk:core-light:2.5.0
+    implementation 'com.incode.sdk:core-light:2.5.1'
  }

Migration to 5.4.0

  • Update Android minSdkVersion in you Android projects's build.gradle:
  buildscript {
    ext {
-    minSdkVersion = 17
-    compileSdkVersion = 31
-    targetSdkVersion = 31
+    minSdkVersion = 21
+    compileSdkVersion = 21
+    targetSdkVersion = 21
    }
  }

Migration to 5.3.0

  • Update Android dependency in you app's build.gradle:
  dependencies {
-    implementation 'com.incode.sdk:core-light:2.3.0
+    implementation 'com.incode.sdk:core-light:2.5.0'
  }

Migration to 5.2.1

  • Update Android dependency in you app's build.gradle:
  dependencies {
-    implementation 'com.incode.sdk:core-light:2.2.0
+    implementation 'com.incode.sdk:core-light:2.3.0'
  }

Migration to 5.1.0

Removed startFaceLogin parameter customerToken, specify only customerUUID.

Migration to 5.x

  1. startOnboarding and startOnboardingSection parameter name config renamed to flowConfig.
IncodeSdk.startOnboarding({
-     config: [
+     flowConfig: [
        { module: 'IdScan' },
        { module: 'SelfieScan' },
        { module: 'FaceMatch' },
      ],
    })
IncodeSdk.startOnboardingSection({
-     config: [
+     flowConfig: [
        { module: 'IdScan' },
        { module: 'SelfieScan' },
        { module: 'FaceMatch' },
      ],
    })
  1. Added setupOnboardingSession that replaces creatingNewOnboardingSession and setOnboardingSession
- await IncodeSdk.creatingNewOnboardingSession({})
+ await IncodeSdk.setupOnboardingSession({})
- await IncodeSdk.setOnboardingSession({})
+ await IncodeSdk.setupOnboardingSession({})
  1. validationModules param of createNewOnboardingSession and setOnboardingSession is now part of setupOnboardingSession method's sessionConfig param
- await IncodeSdk.createNewOnboardingSession({
-        sessionConfig: {
-         ...
-        },
-        validationModules: ['id', 'liveness'],
+ await IncodeSdk.setupOnboardingSession({
+        sessionConfig: {
+         ...
+         validationModules: ['id', 'liveness'],
+        },
- await IncodeSdk.setOnboardingSession({
-        sessionConfig: {
-         ...
-        },
-        validationModules: ['id', 'liveness'],
+ await IncodeSdk.setupOnboardingSession({
+        sessionConfig: {
+         ...
+         validationModules: ['id', 'liveness'],
+        },

Migration to 4.5.0-nvc

  • Update Android dependency in you app's build.gradle:
  dependencies {
-    implementation 'com.incode.sdk:core-light:2.0.0
+    implementation 'com.incode.sdk:core-light:2.2.0'
  }

Migration to 4.4.1-nvc

  • In your Android app's build.gradle file set compileSdkVersion to 31 or higher.

Migration to 4.4.0-nvc

UserScoreCompleteEvent fields are now reorganized differently:

  • Basic parsed user score results are stored in result.data
  • Full UserScore data is set as raw JSON in result.extendedUserScoreJsonData field

Migration to 4.x

initialize method changes:

  • Removed conferenceUrl parameter method that wasn't used.
  • Removed regionCode parameter, now part of OnboardingSessionConfig object that is available as an optional parameter in startOnboarding, createOnboardingSession, and setOnboardingSession methods.

startOnboarding method changes:

  • Removed interviewId parameter, now part of sessionConfig object that is available as an optional parameter
  • Removed configurationId parameter, now part of sessionConfig object that is available as an optional parameter
  • Added optional sessionConfig parameter, OnboardingSessionConfig object where you can specify all session parameters.

createOnboardingSession method changes:

  • Removed unused verifiers parameter
  • Added optional sessionConfig parameter, OnboardingSessionConfig object where you can specify all session parameters.
  • Added validationModules parameter, where you can specify the list of validation modules used for a session.

startOnboardingSection method changes:

  • Removed interviewId parameter. Please specify it either in createOnboardingSession or setOnboardingSession via sessionConfig parameter.

Migration to 3.2.x

How ID results were provided before 3.2.x:

const setupListeners = () => {
  // returns a callback to unregister your listener, e.g. when your screen is getting unmounted
  const complete = IncodeSdk.onStepCompleted;
  return [
    complete({
      module: 'IdScan',
      listener: (e) => {
        console.log('ID scan result:', e.result);
      },
    }),
  ];
};

How to listen for ID results in 3.2.x:

const setupListeners = () => {
  // returns a callback to unregister your listener, e.g. when your screen is getting unmounted
  const complete = IncodeSdk.onStepCompleted;
  return [
    complete({
      module: 'IdScanFront',
      listener: (e) => {
        console.log('ID scan front result:', e.result);
      },
    }),
    complete({
      module: 'IdScanBack',
      listener: (e) => {
        console.log('ID scan back result: ', e.result);
      },
    }),
    complete({
      module: 'ProcessId',
      listener: (e) => {
        console.log('ProcessId result: ', e.result.extendedOcrData);
      },
    }),
  ];
};

iOS Podfile changes

Standard SDK:

Replace

pod 'react-native-incode-sdk', :path => '../node_modules/react-native-incode-sdk'

with:

pod 'react-native-incode-sdk', :path => '../node_modules/react-native-incode-sdk/ios'

Dynamic Delivery:

Replace

pod 'react-native-incode-sdk/ODR', :path => '../node_modules/react-native-incode-sdk'

with:

pod 'react-native-incode-sdk/ODR', :path => '../node_modules/react-native-incode-sdk/ios'

Migration to 3.1.x

If you wish to keep using standard/Non-Dynamic Delivery version of the SDK on Android platform, please add this dependency in you app's build.gradle:

implementation 'com.incode.sdk:core-light:2.0.0'