> For the complete documentation index, see [llms.txt](https://ftech.gitbook.io/ekyc-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ftech.gitbook.io/ekyc-sdk/ios-ekyc-sdk/3.-sdk-features.md).

# 3. SDK Features

**Enable Liveness version:**

```swift
    FEKYCApp.setEnableLiveness()
```

**Use full stream sdk:**

```swift
    FEKYCApp.instance().start()
```

#### Note: If you don't want to use enough threads, the SDK provides the following features <a href="#user-content-note-if-you-dont-want-to-use-enough-threads-the-sdk-provides-the-following-features" id="user-content-note-if-you-dont-want-to-use-enough-threads-the-sdk-provides-the-following-features"></a>

**Create transaction**

* Used to create transaction for Ekyc execution session
* When successful transaction creation, the SDK returns a model transaction data which leads to the `creatTransactionSuccess()` callback. Handling create transaction successfully here.
* When creating transaction fails, it will be processed at callback `ekycFailure()`.

```swift
    FEKYCApp.instance().createTransaction()
```

**Get process transaction**

* Used to get the Ekyc process of a transaction

| Param         | Type   | Description    |
| ------------- | ------ | -------------- |
| transactionId | String | Transaction id |

```swift
    FEKYCApp.instance().getProcessTransaction(transactionId)
```

**Upload Photo**

* Used to upload photos of documents, face for Ekyc

| Param     | Type      | Description      |
| --------- | --------- | ---------------- |
| pathImage | String    | Image path local |
| step      | FEKYCStep | Verify steps     |

* When the photo upload is successful, the SDK returns a model capture data resulting in the `uploadPhotoSuccess()` callback. Handling photo upload successfully here.
* When uploading photo fails, it will be handled at callback `ekycFailure()`.

```swift
    FEKYCApp.instance().uploadPhoto(step: FEKYCStep, imageFile: imageFile)
```

**Face Matching**

* Use this method to get ORC scan information & check matching face from upload photo
* When face matching is successful, the SDK returns a model face matching data resulting in the `faceMatchingSuccess()` callback. Handling face matching successfully here.

```
     FEKYCApp.instance().faceMatching()
```

`FaceMatchingData`

| Param     | Type     | Description      |
| --------- | -------- | ---------------- |
| sessionId | String   | Session id       |
| cardInfo  | CardInfo | Card information |

`CardInfo`

| Param          | Type   | Description     |
| -------------- | ------ | --------------- |
| id             | String | id card         |
| birthDay       | String | birth day       |
| birthPlace     | String | birth place     |
| cardType       | String | card type       |
| gender         | String | gender          |
| issueDate      | String | issue date      |
| issuePlace     | String | issue place     |
| name           | String | full name       |
| nationality    | String | nationality     |
| originLocation | String | origin location |
| passportNo     | String | passport no     |
| recentLocation | String | recent location |
| validDate      | String | valid date      |
| feature        | String | feature         |
| nation         | String | nation          |
| mrz            | String | mrz             |

**Submit info**

* Use this method to submit information & finish ekyc session
* After submitting the info successfully, the SDK returns a status leading to the `didEkycSuccess()` callback. Handling submit info successfully here.

```swift
    FEKYCApp.instance().submitInfo(info: FaceMatchingData)ư
```
