Integrating Mobile SDK for iOS

📘 Overview

  • Library Name: IntellicheckSDK
  • Latest Version: 1.0.0
  • Purpose: Enables scanning and verification of identity documents such as driver's licenses and passports.

📋 Requirements

  • Minimum iOS: 17
  • Hardware: A device with a high-quality camera capable of scanning PDF417 barcodes.

🚀 Integration Steps

1. Obtain the SDK

To receive the SDK archive, contact our support team and request the file named:

  • IntellicheckSDK.zip

2. Add the SDK to Your Project

2.1 Configure Xcode Project Settings

  • Set Deployment Target to 17
  • Use iOS 17 SDK for compiling (comes with Xcode 15 or later)

Configure NFC Reader Application Identifiers

To enable NFC reading functionality, add the following Application Identifiers (AIDs) to your Info.plist file. These identifiers allow the SDK to communicate with NFC chips in identity documents.

<!-- Add to your Info.plist: -->
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
  <string>A0000002471001</string>
  <string>E80704007F00070302</string>
  <string>A000000167455349474E</string>
  <string>A0000002480100</string>
  <string>A0000002480200</string>
  <string>A0000002480300</string>
  <string>A00000045645444C2D3031</string>
</array>
👍

These AIDs correspond to standard protocols used in electronic passports and ID documents.

2.3 Add SDK Files

Create a folder named Frameworks in the root directory of your Xcode project. Unzip IntellicheckSDK.zip into the Frameworks folder.

Your folder structure should look like:

project-root/

 └── Frameworks/
  └── IntellicheckSDK/
   └── intellicheck.framework/

2.3 Link the Framework

  1. Go to your project settings → General tab.
  2. Under Frameworks, Libraries, and Embedded Content, click the + button.
  3. Select Intellicheck.framework and set it to Embed & Sign.
  4. Update Build Settings (if needed):
  • Go to Build Settings → Framework Search Paths.
  • Add: $(PROJECT_DIR)/Frameworks/IntellicheckSDK

🧪 Usage Examples

Basic Usage

This example shows how to:

  1. Initialize the SDK with your customer ID
  2. Present the scanning interface
  3. Subscribe to scan results using Combine

The configurator.scanResult publisher returns scan data directly upon successful completion.

import Combine
import Intellicheck
import SwiftUI

struct DemoSDK: View {
    private var config = ConfigurationModel(customerId: "<YOUR_CUSTOMER_ID>")
    private var configurator = Configurator()
    @State private var cancellable = Set<AnyCancellable>()
    @State private var openSDK = false
    
    var body: some View {
        VStack {
            Button {
                openSDK = true
            } label: {
                Text("Open SDK")
            }
        }
        .fullScreenCover(isPresented: $openSDK) {
            configurator.start(configuration: config)
        }
        .onAppear {
            // Subscribe to scan results
            configurator.scanResult
                .sink { value in
                    switch value {
                    case .success(let data):
                        print("Scan successful: \(data)")
                    case .failure(let error):
                        print("Error: \(error.localizedDescription)")
                    }
                }
                .store(in: &cancellable)
        }
    }
}

Replace <YOUR_CUSTOMER_ID> with your Intellicheck customer ID from your account.

Scan Results:

  • .success: Contains the scanned document data
  • .failure: Contains error information if the scan fails

⚙️Configuration

Customize the SDK's appearance and behavior by setting ConfigurationModel properties. This allows you to match the SDK to your app's branding and control various scanning features.

Core Settings

PropertyTypeDescriptionDefault
customerIdStringYour Intellicheck customer ID (required in initializer)None (required)
themeThemeVisual customization (colors, fonts, corner radius)System defaults
companyLogoImageCompany logo displayed in SDKDefault SDK logo
privacyPolicyUrlStringURL to your privacy policy"https://www.intellicheck.com/privacy-policy"
biometricsPolicyUrlStringURL to your biometrics policy"https://www.intellicheck.com/biometric-information-policy"

Scanning Behavior

PropertyTypeDescriptionDefault
isFaceCheckONBoolEnable facial recognition verificationfalse
showSuccessBarcodeScanBoolShow success screen after barcode scantrue
scanTimeoutTimeIntervalMaximum scan duration (seconds)45
driverLicenseOnlyBarCodeBoolScan only driver license barcode (back of card)false
quickScanBoolSkip retake/confirmation screens for faster scanningfalse
automaticCameraSelectionBoolAuto-select best camera for optimal qualityfalse
extraPixelForCroppingCGFloatExtra space around cropped documents (pixels)40

Advanced Options

PropertyTypeDescriptionDefault
sendScanResultsBoolSend results to Intellicheck Hub instead of your appfalse
preventDeviceSleepBoolKeep screen active during scanningtrue
showApiErrorBoolDisplay API error messages (for debugging)false

Theme Configuration

Theme (Theme)

PropertyTypeDescriptionDefault
colorsICColorColor scheme for UI elementsSDK defaults
fontsICFontTypography configurationInter font family
buttonCornerRadiusDoubleButton corner radius (points)10.0

Colors (ICColor)

PropertyTypeDescription
backgroundColorBackground color
primaryColorPrimary UI element color
textColorMain text color
buttonTextColorButton text color
buttonBorderColorButton border color

Fonts (ICFont)

PropertyTypeDescriptionDefault
navigationTitleFontNavigation bar titlesInter Regular 18pt
titleFontSection titlesInter Regular 24pt
bodyRegularFontRegular body textInter Regular 16pt
bodySemiboldFontEmphasized body textInter SemiBold 16pt
buttonTitleFontButton labelsInter SemiBold 16pt

Example Code

Example: Custom Branding

For customizing the SDK's appearance to match your app's branding, including colors, fonts, logos, and policy URLs.

import SwiftUI
import Intellicheck

struct ContentView: View {
    private var config: ConfigurationModel {
        let model = ConfigurationModel(customerId: "<YOUR_CUSTOMER_ID>")
        
        // Customize theme colors
        model.theme.colors = ICColor(
            background: Color(.systemBackground),
            primary: .blue,
            text: .primary,
            buttonText: .white,
            buttonBorder: .gray
        )
        
        // Customize fonts
        model.theme.fonts = ICFont(
            navigationTitle: .system(size: 20, weight: .bold),
            title: .system(size: 18, weight: .semibold),
            bodyRegular: .system(size: 15),
            bodySemibold: .system(size: 15, weight: .semibold),
            buttonTitle: .system(size: 16, weight: .medium)
        )
        
        // Set button corner radius
        model.theme.buttonCornerRadius = 12
        
        // Add company branding
        model.companyLogo = Image("company_logo")  // From Assets.xcassets
        model.privacyPolicyUrl = "https://yourcompany.com/privacy"
        model.biometricsPolicyUrl = "https://yourcompany.com/biometrics"
        
        // Configure scanning behavior
        model.isFaceCheckON = true
        model.quickScan = false
        model.scanTimeout = 60
        model.preventDeviceSleep = true
        
        return model
    }
    
    var body: some View {
        // Your view implementation
    }
}

Example: Quick Scan Mode

For high-volume scanning scenarios where speed is critical.

private var quickScanConfig: ConfigurationModel {
    let model = ConfigurationModel(customerId: "<YOUR_CUSTOMER_ID>")
    
    // Enable quick scan mode (skip confirmation screens)
    model.quickScan = true
    
    // Reduce scan timeout
    model.scanTimeout = 30
    
    // Disable success screen
    model.showSuccessBarcodeScan = false
    
    // Enable automatic camera selection for best quality
    model.automaticCameraSelection = true
    
    return model
}

Example: Driver License Barcode Only

For applications that only need to scan driver license barcodes.

private var barcodeOnlyConfig: ConfigurationModel {
    let model = ConfigurationModel(customerId: "<YOUR_CUSTOMER_ID>")
    
    // Scan only driver license barcode (back of card)
    model.driverLicenseOnlyBarCode = true
    
    // Enable quick scan for faster processing
    model.quickScan = true
    
    return model
}

Notes

  • Customer ID: Replace <YOUR_CUSTOMER_ID> with your Intellicheck customer ID from your account dashboard
  • Company Logo: Add your logo image to Assets.xcassets and reference it by name
  • Custom Colors: Use SwiftUI Color initializers - system colors, asset catalog colors, or RGB values
  • Custom Fonts: Use .system() for San Francisco font variants or .custom() for custom fonts (ensure fonts are added to your project)
  • Policy URLs: Provide valid HTTPS URLs to your privacy and biometrics policy pages

❓ Need Help?

If you encounter issues or have questions, please contact our support team.