Registration combines a real-time face liveness check with FIDO2 passkey creation in a single, SDK-managed flow. When the user completes registration, the SDK verifies that a live face is present (preventing photo and video spoofing), then creates a WebAuthn credential bound to yourDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/signing-sdk/face-auth-ios/llms.txt
Use this file to discover all available pages before exploring further.
rpId domain and stores it in the device’s Secure Enclave. Your backend receives a requestId that you can use to correlate the event server-side.
What registration does
- Face liveness detection — the SDK captures and analyzes the user’s face to confirm it is live, not a photo or video replay.
- Passkey creation — a FIDO2/WebAuthn credential is generated on-device, tied to the
rpIdyou supply inTadSigningConfig. - Backend confirmation — the SDK calls your
apiBaseUrland returns arequestIdto your completion handler on success.
Required inputs
| Parameter | Type | Description |
|---|---|---|
bankId | String | A stable identifier for the user in your system (e.g. a bank customer ID). |
dto | [String: String] | Optional extra fields sent to the backend. Pass ["otp": otp] to include a one-time password. |
config | TadSigningConfig | SDK configuration (API URL, public key, rpId, service name, proxy settings). |
mode | TadSigningMode | Must be .register for the registration flow. |
The
dto dictionary is optional. Pass [:] when you do not need to include an OTP or other extra fields. The demo uses otp.isEmpty ? [:] : ["otp": otp] to handle both cases cleanly.Presenting the view controller
Build the dto payload
Construct the optional dictionary that accompanies the registration request. If your flow uses a one-time password as an additional factor, include it here.
Instantiate TadSigningViewController
Create the view controller with your config, the user’s
bankId, the dto payload, and mode: .register. Provide a trailing closure to receive the result.Resolve the top view controller
The SDK view controller must be presented from the currently active
UIViewController. Use a helper to walk the presentation chain.Handling the result
The completion closure receives aTadSigningResult. On success, requestId identifies the registration event on your backend.
requestId to your server to confirm the registration event and link the new passkey to the user’s account.
Associated Domains requirement
Passkeys are bound to therpId domain via the WebAuthn specification. Your app must declare an Associated Domains entitlement matching your rpId so the OS will permit passkey creation.
In your entitlements file (or via Xcode’s Signing & Capabilities tab), add:
signing.tadi.uz with your production rpId. The domain must also serve an apple-app-site-association file at https://<rpId>/.well-known/apple-app-site-association that lists your app’s bundle ID.
Permissions
The SDK requires camera access for face liveness detection. Add the following key to yourInfo.plist: