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
- Go to your project settings → General tab.
- Under Frameworks, Libraries, and Embedded Content, click the + button.
- Select
Intellicheck.frameworkand set it to Embed & Sign. - 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:
- Initialize the SDK with your customer ID
- Present the scanning interface
- 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
| Property | Type | Description | Default |
|---|---|---|---|
customerId | String | Your Intellicheck customer ID (required in initializer) | None (required) |
theme | Theme | Visual customization (colors, fonts, corner radius) | System defaults |
companyLogo | Image | Company logo displayed in SDK | Default SDK logo |
privacyPolicyUrl | String | URL to your privacy policy | "https://www.intellicheck.com/privacy-policy" |
biometricsPolicyUrl | String | URL to your biometrics policy | "https://www.intellicheck.com/biometric-information-policy" |
Scanning Behavior
| Property | Type | Description | Default |
|---|---|---|---|
isFaceCheckON | Bool | Enable facial recognition verification | false |
showSuccessBarcodeScan | Bool | Show success screen after barcode scan | true |
scanTimeout | TimeInterval | Maximum scan duration (seconds) | 45 |
driverLicenseOnlyBarCode | Bool | Scan only driver license barcode (back of card) | false |
quickScan | Bool | Skip retake/confirmation screens for faster scanning | false |
automaticCameraSelection | Bool | Auto-select best camera for optimal quality | false |
extraPixelForCropping | CGFloat | Extra space around cropped documents (pixels) | 40 |
Advanced Options
| Property | Type | Description | Default |
|---|---|---|---|
sendScanResults | Bool | Send results to Intellicheck Hub instead of your app | false |
preventDeviceSleep | Bool | Keep screen active during scanning | true |
showApiError | Bool | Display API error messages (for debugging) | false |
Theme Configuration
Theme (Theme)
| Property | Type | Description | Default |
|---|---|---|---|
colors | ICColor | Color scheme for UI elements | SDK defaults |
fonts | ICFont | Typography configuration | Inter font family |
buttonCornerRadius | Double | Button corner radius (points) | 10.0 |
Colors (ICColor)
| Property | Type | Description |
|---|---|---|
background | Color | Background color |
primary | Color | Primary UI element color |
text | Color | Main text color |
buttonText | Color | Button text color |
buttonBorder | Color | Button border color |
Fonts (ICFont)
| Property | Type | Description | Default |
|---|---|---|---|
navigationTitle | Font | Navigation bar titles | Inter Regular 18pt |
title | Font | Section titles | Inter Regular 24pt |
bodyRegular | Font | Regular body text | Inter Regular 16pt |
bodySemibold | Font | Emphasized body text | Inter SemiBold 16pt |
buttonTitle | Font | Button labels | Inter 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.xcassetsand reference it by name - Custom Colors: Use SwiftUI
Colorinitializers - 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.
Updated 1 day ago
