Skip to main content
The Swift SDK gives macOS apps Emirates ID reading and fingerprint capture through an idiomatic async/await API (with callback-style overloads, and full Objective-C support).
Prerequisites. To read a card or capture a fingerprint, install the matching macOS desktop service first — mbkyc-pcsc-service for card readers and the vendor service (e.g. mbkyc-suprema-service) for fingerprint. Without them, listSmartcardReaders() / listFingerprintReaders() return empty. See Install services on macOS and Supported devices. Manual-entry verification needs no services.

Download the example

A self-contained CLI. Drop the XCFramework into deps/, fill in the config block, and swift run.

Install

The Swift SDK ships as a signed, notarized XCFramework — there is no Swift Package Manager or CocoaPods distribution. Download the framework from Nexus and link it into your Xcode project.
1

Download the XCFramework

Fetch it from the raw repository (replace repo.client.ae with your proxied host, and 0.5.0 with the current version):
2

Add it to your project

Drag MBKYCSDK.xcframework into your Xcode target’s Frameworks, Libraries, and Embedded Content, set to Embed & Sign. The C library is statically linked inside the framework — there’s nothing else to add.

Initialize

The API secret never enters the SDK. You pass a TokenSignerDelegate whose sign(signingInput:completion:) routes the input to the holder of the secret (your backend), signs it, and returns the signature. See Authentication.

Register & validate

Register the device once, then validate with the request for your flow:

Validation requests

Each request is a ValidationRequest subclass. Pick the one for the document you’re verifying — see Validation methods for when to use each, and Install services on macOS for the hardware prerequisites.
Manual entry — no hardware required.
Card read — needs a smart card reader + mbkyc-pcsc-service.
+ Fingerprint — pass a fingerprint: to either request above to add a biometric match (needs a fingerprint sensor + its service — see Biometrics).
Full initializers (optional params: dateOfBirth, issueDate, expiryDate, fingerprint, clientReferenceId):
  • EmiratesIdManual(idNumber:documentNumber:nationality:dateOfBirth:issueDate:expiryDate:fingerprint:clientReferenceId:)
  • EmiratesIdCard(readerId:cardDipTimeoutMs:fingerprint:clientReferenceId:)
  • PassportManual(passportNumber:passportType:nationality:dateOfBirth:issueDate:expiryDate:clientReferenceId:)
Each async method also has a completion-handler overload — (VerificationResult?, MBKYCError?) -> Void — for codebases that haven’t adopted async/await.

Biometrics

Attach a Fingerprint to an Emirates ID request (EmiratesIdCard or EmiratesIdManual) to also match a fingerprint. You supply a FingerRecommendationDelegate that picks which finger to capture when the SDK asks:
Requires a fingerprint sensor and its desktop service (e.g. mbkyc-suprema-service). Get scanner.id from listFingerprintReaders().

Error handling

All errors are MBKYCError: Error with a typed ErrorCode enum:

Objective-C

MBKYC can be used from any queue; hold it for the lifetime of your SDK use.

Full API reference

async/await signatures below; each has a completion-handler overload of the form completion: @escaping (Value?, MBKYCError?) -> Void. Shared types are in Data types. Validation requests (ValidationRequest subclasses — see Validation requests above):
Cancel by cancelling the enclosing Task. Errors are thrown as MBKYCError.