---
Source: https://docs.microblink.com/platform/sdk/ios/integration
Title: Integration
Description: Step-by-step integration guide for Microblink Platform iOS SDK
---

# Integration

### Swift Package Manager

- File > Swift Packages > Add Package Dependency
- Add https://github.com/MicroblinkPlatform/microblink-platform-ios.git
- Select **Exact Version** - 1.2.0
- Add all dependencies to your target!

### Clone

If you prefer not to use Swift Package Manager, you can integrate MicroblinkPlatform into your project manually.

Manually import xcframeworks from `Frameworks` folder.

Additionally, clone [BlinkIDVerify repository](https://github.com/BlinkID/blinkid-verify-ios) to use `BlinkIDVerifyUX` and `BlinkIDVerify` xcframeworks.  

### UIKit

```swift
import MicroblinkPlatform
import UIKit

let consent = MicroblinkPlatformConsent(
    userId: user_id,
    isProcessingStoringAllowed: true,
    isTrainingAllowed: true,
    note: nil
)
        
let serviceSettings = MicroblinkPlatformServiceSettings(
    workflowId: your-workflow-id,
    authProviderHost: your_host_url,
    consent: consent,
    additionalRequestHeaders: nil
)
        
let microblinkPlatform = MicroblinkPlatformSDK(
    serviceSettings: serviceSettings,
    delegate: self
)
        
let viewController = microblinkPlatform.startSDK()

present(viewController, animated: true)
```

Verification results are returned via `MicroblinkPlatformSDKDelegate`.

```swift
func microblinkPlatformSDKDidFinish(viewController: UIViewController, result: MicroblinkPlatformResult) {
    // `MicroblinkPlatformResult` has:
    // - status enum that returns: accept, review, reject
    // - transactionId string
    viewController.dismiss(animated: true)
}
    
func microblinkPlatformSDKDidClose(viewController: UIViewController) {
    viewController.dismiss(animated: true)
}
```

### SwiftUI

```swift
import SwiftUI

struct ContentView: View {
    @State private var showSDK = false

    var body: some View {
        Button("Start SDK") {
            showSDK = true
        }
        .fullScreenCover(isPresented: $showSDK) {
            MicroblinkPlatformWrapperView(workflowId: your-workflow-id, authProviderHost: your_host_url, additionalRequestHeaders: nil) { microblinkPlatfromResult in
                showSDK = false
            } onClose: {
                showSDK = false
            }
        }
    }
}
```

Example of `MicroblinkPlatformWrapperView`.

```swift
import MicroblinkPlatform
import SwiftUI

struct MicroblinkPlatformWrapperView: UIViewControllerRepresentable {
    let workflowId: String
    let authProviderHost: String
    let additionalRequestHeaders: [String: String]?

    var onCompletion: (MicroblinkPlatformResult) -> Void
    var onClose: () -> Void

    init(workflowId: String, authProviderHost: String, additionalRequestHeaders: [String : String]? = nil, onCompletion: @escaping (MicroblinkPlatformResult) -> Void, onClose: @escaping () -> Void) {
        self.workflowId = workflowId
        self.authProviderHost = authProviderHost
        self.additionalRequestHeaders = additionalRequestHeaders
        self.onCompletion = onCompletion
        self.onClose = onClose
    }
    
    func makeUIViewController(context: Context) -> UIViewController {
        let consent = MicroblinkPlatformConsent(
            userId: user_id,
            isProcessingStoringAllowed: true,
            isTrainingAllowed: true,
            note: nil
        )
        
        let serviceSettings = MicroblinkPlatformServiceSettings(
            workflowId: workflowId,
            authProviderHost: authProviderHost,
            consent: consent,
            additionalRequestHeaders: additionalRequestHeaders
        )

        let microblinkPlatform = MicroblinkPlatformSDK(
            serviceSettings: serviceSettings,
            delegate: context.coordinator
        )

        return microblinkPlatform.startSDK()
    }

    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
    }

    func makeCoordinator() -> Coordinator {
        Coordinator(onCompletion: onCompletion, onClose: onClose)
    }

    // Verification results are returned via `MicroblinkPlatformSDKDelegate`.
    class Coordinator: NSObject, MicroblinkPlatformSDKDelegate {
        var onCompletion: (MicroblinkPlatformResult) -> Void
        var onClose: () -> Void

        init(onCompletion: @escaping (MicroblinkPlatformResult) -> Void, onClose: @escaping () -> Void) {
            self.onCompletion = onCompletion
            self.onClose = onClose
        }

        func microblinkPlatformSDKDidFinish(viewController: UIViewController, result: MicroblinkPlatformResult) {
            // `MicroblinkPlatformResult` has:
            // - status enum that returns: accept, review, reject
            // - transactionId string
            viewController.dismiss(animated: true) {
                self.onCompletion(result)
            }
        }

        func microblinkPlatformSDKDidClose(viewController: UIViewController) {
            viewController.dismiss(animated: true) {
                self.onClose()
            }
        }
    }
}
```


Last updated on Apr 16, 2026
