Skip to main content

Incode Welcome

Incode Welcome provides effortless onboarding where security matters. Incode Welcome is part of Incode Omnichannel Biometric Identity Platform, that is powered by Incode's world class Face Recognition, Liveness detection and ID Validation models. Organizations may choose to have an optional video conference module for additional verification of the customer’s identity. Also if application size is a concern, the SDK features the abilitty to download its resources at runtime using On-Demand Resources.

In this repo you can find an example onboarding app that uses IncdOnboarding SDK to to enable remote account opening.

Prerequisites​

For running the example app you must have the following installed:

Example App Instructions​

How to run the example app​

  1. Make sure you have all the of prerequisites.
  2. Clone or download this project (Incode-Welcome-Example-iOS).
  3. In the Terminal, navigate to the example project directory and run the pod install command to install the SDK via CocoaPods.
  4. Open Omni.xcworkspace which Cocoapods has generated.
  5. Open Environment/Incode-Info.plist and set the values for:
    • IncdOnboardingURL [string] with the provided Onboarding URL
    • IncdOnboardingApiKey [string] with the provided API key
    • ConferenceURL [string] with the provided Onboarding URL (If applicable)
  6. Run the Omni scheme.

SDK Variants​

The SDK is available in different variants. They differ between link type (static/dynamic), whether or not the VideoConference/Local Face Authentication/Local Face Mask check/NFC Scan modules are included, and whether the resources are embedded or are downloaded On-Demand at runtime. You may choose which one to use.

The default variant is dynamic linking, with the Video Conference and Local Face Authentication modules excluded, with embedded resources. We recommend using the default variant unless your specific needs require otherwise.

Installation​

There are two different methods to install the SDK for your app:

  • Installation via CocoaPods
  • Manual installation

Cocoapods is the easiest and fastest way to get the SDK installed on your app especially if your project is already using Cocoapods. Manual installation offers more flexibility and configurability within your project settings.

Pick the method which makes most sense for your specific project and needs.

How to add the onboarding SDK to your app​

Cocoapods installation​

When integrating using cocoapods you specify needed variant in your podfile by setting the version number, e.g. 5.14.0 and append the link type "-d" for dynamic, "-s" for static (eg. 5.14.0-d). Optionally you can decide to include Video Conference, Local Face Authentication module, Local Face Mask check or NFC Scan module:

  • Append "-vc" if you need Video Conference (eg. 5.14.0-d-vc)
  • Append "-l" if you need Local Face Authentication (eg. 5.14.0-d-l)
  • Append "-nfc" if you need NFC Scan (eg. 5.14.0-s-nfc). Also, make sure you check NFC Scan - Integration & Usage.

If you wish to use On-Demand Resources use the "ODR" subspec (pod 'IncdOnboarding/ODR'). More information regarding On-Demand Resources can be found in the ODR User Guide.

  1. Make sure you have all the Prerequisites
  2. To integrate the sdk into your Xcode project using CocoaPods, specify the source and the pod in your Podfile:
  • source 'git@github.com:Incode-Technologies-Example-Repos/IncdDistributionPodspecs.git'
  •  `pod 'IncdOnboarding', '5.14.0-d'`
  1. In the Terminal, navigate to your app's project directory and run the pod install command to install the SDK via CocoaPods
    - If you're using a static variant SDK of the, you must add the following values to the "Import Paths" build setting: `"$(SRCROOT)/Pods/IncdOnboarding/IncdOnboarding.xcframework/ios-arm64"`
    "$(SRCROOT)/Pods/IncdOnboarding/IncdOnboarding.xcframework/ios-x86_64-simulator"
  2. Drag & drop the Incode-Info.plist from the example project to your Xcode project (anywhere you prefer inside of the Project navigator).
  3. In the “Choose options for adding these files” popup window, make sure to:checkmark “Copy items if needed”, select “Create groups” and checkmark the targets which you wish to use.
  4. Open the Incode-Info.plist inside your Xcode project and set the following values: OnboardingURL with the onboarding URL which we provide you.
    OnboardingApiKey with the API key which we provide you.
    ConferenceURL with the conference URL which we provide you. (Optional)
  5. Depending on the modules you would like to use, please adapt your Info.plist by adding: NSCameraUsageDescription. The SDK uses the camera in order to verify the identity of the customer, e.g. in ID scan, Selfie scan and so on.
    NSLocationWhenInUseUsageDescription. The SDK uses the current user location in order to detect exact location for Geolocation step.
    NSMicrophoneUsageDescription. The SDK uses microphone for performing a video call during Video Conference step or for doing speech recognition during Video Selfie. NFCReaderUsageDescription. The SDK uses NFC Reader for reading Passports or other documents that have NFC chip within.
NOTE​

For variants which use the VideoConference module, there is a bug with CocoaPods which links the needed OpenTok dependency twice. This causes a duplicate interface error during runtime. The Podfile in the example app contains a post install script which fixes this. You may use this script in your own podfile. It can also be done manually, by deleting the "-framework OpenTok" text from the pods xcconfig file, but this would have to be done after every pod install command.

NOTE​

If you are running a Mac computer with Apple Silicon and get errors while trying to install the pod, use the following two commands in Terminal as a fix:

sudo arch -x86_64 gem install ffi
arch -x86_64 pod install

Manual installation​

If you prefer not to use CocoaPods, you can integrate the SDK into your project manually.

Clone the SDK distribution repo and checkout the tag variant you want to use. Tags with "s" indicate Static linking while tags with "d" indicate dynamic linking. Please do not download the repo or frameworks/zips directly from the github website, instead get the frameworks using git clone.

  1. Make sure you have the Prerequisites (excluding CocoaPods)
  2. Clone the SDK distribution repo and checkout the tag variant you want to use.
  3. Select all the files (excluding the podspec file) from the “IncdOnboarding” folder and with the files selected, drag & drop them into your Xcode Project (anywhere you prefer inside of the Project navigator).
  4. If you're using an SDK varaint which includes the VideoConference module then you must download the required OpenTok framework. Unzip the downloaded file, then drag & drop the extracted framework into your Xcode Project. If you're using a variant without the VideoConference module then skip this step.
  5. In the “Choose options for adding these files” popup window, make sure to: checkmark “Copy items if needed", select “Create groups” and checkmark the targets which you wish to use.
  6. For each target which you checkmark, in its “Frameworks, Libraries and Embedded Content” section, make sure to set the embedding option accordingly: IncdOnboarding.xcframework Static variant should be set to "Do Not Embed". IncdOnboarding.xcframwork Dynamic variant should be set to "Embed & Sign". Both opencv2.framework and OpenTok.framework should be set to "Do Not Embed".
  7. Add following to the Project Build Settings Other Linker Flags: -l "stdc++" -l "iconv" -framework "VideoToolbox"
  8. Drag & drop the Incode-Info.plist from the example project to your Xcode project (anywhere you prefer inside of the Project navigator).
  9. In the “Choose options for adding these files” popup window, make sure to: checkmark “Copy items if needed”, select “Create groups” and checkmark the targets which you wish to use.
  10. Open the Incode-Info.plist inside your Xcode project and set the following values: OnboardingURL with the onboarding URL which we provide you.
    OnboardingApiKey with the API key which we provide you.
    ConferenceURL with the conference URL which we provide you. (Optional)
  11. Depending on the modules you would like to use, please adapt your Info.plist by adding: NSCameraUsageDescription. The SDK uses the camera in order to verify the identity of the customer, e.g. in ID scan, Selfie scan and so on.
    NSLocationWhenInUseUsageDescription. The SDK uses the current user location in order to detect exact location for Geolocation step.
    NSMicrophoneUsageDescription. The SDK uses microphone for performing a video call during Video Conference step or for doing speech recognition during Video Selfie. NFCReaderUsageDescription. The SDK uses NFC Reader for reading Passports or other documents that have NFC chip within.

Requirements​

  • Xcode 13+
  • Swift 5.5+
  • iOS 11+
  • Git LFS
  • CocoaPods 1.11 (if applicable)

Documentation​

Known Issues​

If you are using the Static variant and are getting a EXC_BAD_ACCESS crash and/or getting duplicate symbol warnings regarding OpenCV, this means that there is another dependency inside your project which is also importing OpenCV. The easiest solution is to switch to the Dynamic variant of our SDK. Other solutions involve manual integration and using a single common OpenCV framework (be aware that OpenCV has different versions and included modules). Cocoapods does not provide dependency resolution for OpenCV as it is not an official pod.

Known conflicting dependencies: PayPal, card.io

License​

Copyright 2019 Incode Technologies. All rights reserved.