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