# iOS SDK Guide
This guide outlines the steps for integrating the SMSDK framework into your iOS application, enabling identity validation processes through facial biometric verification or document scanning.
##### **Installation**
1. ##### **Add the library**
- Download the "SMSDK.xcframework" file.
- In your Xcode project, navigate to the target's general settings.
- Go to the "Frameworks, Libraries, and Embedded Content" section.
- Click the "+" button and add the "SMSDK.xcframework" to your project. Ensure it's set to "Embed & Sign".
2. ##### ** Import Required Libraries**
In the file where you plan to use the SDK, import the necessary libraries:
> swift
>
> import UIKit
> import AdoComponent
The `TransactionResponse` object will contain the results of the transaction, providing detailed feedback on the validation process.
##### **Minimum SDK Version for iOS**
**
**Update the minimum iOS version to iOS 11.0:
- Navigate to your target's Build Settings.
- Find the "Deployment" section.
- Set the "iOS Deployment Target" to iOS 11.0 or higher.
##### **Example Implementation**
To initiate the SMSDK framework, use the `initWith` method from the `SMManager` class. This method requires a delegate and an `SMParams` object containing the launch parameters. Implement the `SMDelegate` extension to handle the SDK's response.**
**
> Intialization
> let params = SMParams(productId: "1",
> projectName: "lulobankqa",
> apiKey: "db92efc69991",
> urlSdk: "https://adocolumbia.ado-tech.com/lulobankqa/api/",
> token: "",
> function: 1, // 1 for Liveness, 2 for Document Scanning
> isFrontSide: false, // true for front, false for back of the document
> uidDevice: "",
> language: "en") // "en" for English, "es" for Spanish
>
> let smManagerVC = SMManager.initWith(delegate: self, params: params)
> smManagerVC.modalPresentationStyle = .fullScreen
> present(smManagerVC, animated: true, completion: nil)
>
> // MARK: - SMDelegate
> extension ViewController: SMDelegate {
> func completedWithResult(result: Bool, response: ResultsResponse?) {
> dismiss(animated: true) {
> // Handle the SDK response here
> }
> }
> }
##### **Parameters Explained**
- **productId**: Identifier for the product being used.
- **projectName**: Your project identifier provided by the service.
- **apiKey**: Your API key for authentication with the service.
- **urlSdk**: The base URL for the SDK's services.
- **token**: Optional token for additional authentication (if required).
- **function**: Determines the operation mode (e.g., 1 for Liveness, 2 for Document Scanning).
- **isFrontSide**: Indicates which side of the document to capture.
- **uidDevice**: A unique identifier for the device.
- **language**: Specifies the language for the SDK interface.
##### **Resources**
Resource files, including animations provided by the client, can be found at the following path within your project:
> SMSDKTest/Resources/Animations
Ensure these resources are correctly integrated into your project for the SDK to function as intended.
##### **State Codes Reference**
Be aware of the following state codes when processing responses:
- `200`: "SUCCESS"
- `201`: "THE\_NUMBER\_OF\_CONFIGURED\_ATTEMPTS\_WAS\_EXCEEDED\_AND\_NO\_LIFE\_WAS\_FOUND\_IN\_THESE"
- `203`: "TIMEOUT"
- `204`: "CANCELED\_PROCED"
- `205`: "PERMISSIONS\_DENIED"
- `401`: "TOKEN\_ERROR"
- `404`: "INVALID\_CREDENTIALS"
- `500`: "CONNECTION\_ERROR"
##### **Demo Application**
For a comprehensive example, including full source code demonstrating the integration and usage of the Scanovate Colombia SDK, visit our GitHub repository:
[Scanovate Colombia SDK Demo App For iOS](https://github.com/Ado-Tech/demo.components.swift "Scanovate Colombia SDK Demo App For iOS")
This demo app provides a hands-on example to help you understand how to integrate and utilize the SDK in your own applications.