Manual Installation

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

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 enable remote account opening.

Prerequisites

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

SDK Variants

The SDK is available in different variants which can differ in linking type, included features, and resource loading.

Versioning and Naming Convention:
The SDK uses custom versioning which is based on semantic versioning with alphabetic symbols representing linking type, specific optional feature(s) and resource loading:

MAJOR.MINOR.PATCH-LinkingType-Feature1-Feature2-...

Linking Type:

  • Dynamic -d (default)
  • Static -s

Optional Features:

  • Video Streaming -vc
  • Local Face Authentication -l
  • Local Face Mask Check -m
  • NFC Scan -nfc
  • End to End Encryption -e2ee
  • Risk Analysis -ra

Resources:

  • Embedded (default)
  • On-Demand Download
    (More information regarding On-Demand Resources can be found in the ODR User Guide)

Default Variant:

<version>-d
Dynamic linking with embedded resources, excluding optional features. Recommended for most users.

Examples:

5.31.0-d
Dynamic linking, embedded resources.

5.31.0-d-vc
Dynamic linking with Video Streaming, embedded resources.

5.31.0-s-nfc
Static linking with NFC Scan, embedded resources. (See NFC Scan-Integration & Usage for more details.)

5.31.0-s-vc-e2ee
Static linking with Video Streaming and End to End Encryption, embedded resources.

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. Follow instructions for Cocoapods/SPM/Manual installation.
  4. Open Omni.xcworkspace in case SDK was added via Cocoapods. In case of SPM or Manual installation, open Omni.xcodeproj
  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.

Installation

There are three different methods to add the SDK to your app:

  • Installation via CocoaPods
  • Installation via SPM
    (Available only for specific variants at the moment, the rest of the variants coming soon)
  • Manual installation

Cocoapods and SPM are the most convenient and fast way to get the SDK installed on your app especially if your project already utilizes these dependency managers Manual installation offers more flexibility and configurability within your project settings.

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

Cocoapods installation

  1. Make sure you have all the Prerequisites
  2. Choose the SDK variant
  3. To integrate the sdk into your Xcode project using CocoaPods, specify the source and the pod in your Podfile:
  • source '[email protected]: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

SPM Installation

  1. Make sure you have all the Prerequisites
  2. Choose the SDK variant
  3. To integrate the SDK into your Xcode project using SPM, tap on the project in the left side bar, following third tab named Package Dependencies.
  4. Add the SPM repository https://github.com/Incode-Technologies-Example-Repos/IncdOnboarding-distribution.git
  5. When adding package, select branch for dependency rule and type in the full version you want to integrate e.g. 5.31.1-d or 5.31.1-d-l.

Manual Installation

If you prefer not to use CocoaPods or SPM, you can integrate the SDK into your project manually by following these steps:

  1. Ensure Prerequisites are Met

    • Confirm that you have all the Prerequisites (excluding CocoaPods).
  2. Clone the SDK Distribution Repository

    • Clone the SDK distribution repository using git clone and check out the tag corresponding to the SDK variant you wish to use. For information about tag meanings, refer to the CocoaPods Installation section.
    • Important: Do not download the repository or framework ZIPs directly from the GitHub website. Instead, use a Git client to clone the repository.
  3. Add SDK Files to Your Xcode Project

    • Navigate to the IncdOnboarding folder in the cloned repository.
    • Select all files except the .podspec file.
    • Drag and drop the selected files into your Xcode project in the Project Navigator.
  4. (Optional) Add OpenTok Framework

    • If you are using an SDK variant that includes the Video Conference module, download the required OpenTok framework:
    • If you are using a variant without the Video Conference module, skip this step.
  5. Configure File Addition Options

    • In the “Choose options for adding these files” window:
      • Check the “Copy items if needed” option.
      • Select “Create groups”.
      • Ensure the appropriate targets are checkmarked.
  6. Set Framework Embedding Options

    • For each target, navigate to the Frameworks, Libraries, and Embedded Content section and configure the embedding options:
      • IncdOnboarding.xcframework (Static variant): Set to "Do Not Embed".
      • IncdOnboarding.xcframework (Dynamic variant): Set to "Embed & Sign".
      • opencv2.framework and OpenTok.framework: Set to "Do Not Embed".
  7. Update Build Settings

    • In the Project Build Settings, add the following to Other Linker Flags:
      -l "stdc++" -l "iconv" -framework "VideoToolbox"
  8. Update Info.plist with Required Permissions

    • Depending on the SDK modules you plan to use, update your Info.plist with the following keys:

      • NSCameraUsageDescription: The SDK requires access to the camera to verify the identity of the user, such as during ID or selfie scans.
      • NSLocationWhenInUseUsageDescription: The SDK uses location services to detect the user's current location for the Geolocation step.
      • NSMicrophoneUsageDescription: The SDK requires access to the microphone for video calls during the Video Conference step or for speech recognition during Video Selfie.
      • NFCReaderUsageDescription: The SDK uses the NFC reader to read passports or other documents that contain an NFC chip.

Requirements

  • Xcode 15.0: Ensure you are using Xcode 15.0 or later.
  • Swift 5.9: The SDK is compatible with Swift 5.9.
  • iOS 13.0 or later: The SDK supports iOS 13.0 and above.
  • Git LFS: The repository uses Git Large File Storage (LFS), so you need Git LFS installed.
  • CocoaPods 1.15 (if applicable): If you are using CocoaPods for installation, ensure you are using version 1.15 or later.

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.