Skip to main content

Integration

Swift Package Manager

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 to use BlinkIDVerifyUX and BlinkIDVerify xcframeworks.

UIKit

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.

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

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.

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()
}
}
}
}