Docs › Blink SDK › iOS
Documentation menu
iOS
Drop-in identity verification for iOS with Swift concurrency. Your backend creates the session; the SDK presents the capture screens and runs the document and liveness steps.
package BlinkKyc 1.3.0
iOS 15+
install Swift Package Manager
Prepare the environment
- In Xcode, choose File › Add Package Dependencies… and enter the Blink package URL
provided with your credentials. Add the
BlinkKycproduct to your app target. - Add a camera usage description to
Info.plist:
Info.plistxml
<key>NSCameraUsageDescription</key>
<string>We use the camera to photograph your document and confirm your identity.</string>Verification flow
Get a session token from your backend (Session API), then present the capture from a view controller:
VerifyViewController.swiftswift
import BlinkKyc
func startVerification(sessionToken: String) {
Task {
do {
let outcome = try await BlinkKyc(baseUrl: URL(string: "https://kyc-api.blink-pay.net")!,
sessionToken: sessionToken)
.document(type: .passport) // .passport | .nationalId | .idCard | .drivingLicence
.face() // liveness + face match
.present(on: self) // the SDK owns the camera UI
.onProgress { progress in print(progress.step) }
.run()
// outcome.result is a device copy — confirm it on your backend.
} catch {
// BlinkStepError: a step failed (e.g. DOCUMENT_UNREADABLE).
// BlinkError: session, network or capture problem — switch on its code.
}
}
}Test on a real iPhone. The simulator has no camera, so the capture screens cannot run there.
UI customisation
VerifyViewController.swiftswift
BlinkKyc(baseUrl: apiURL, sessionToken: sessionToken,
theme: BlinkTheme(accent: UIColor(red: 0.08, green: 0.50, blue: 0.24, alpha: 1)))More in Customisation.
Next
Handle the device outcome and errors (SDK result), then read the authoritative decision on your backend (Result API).