Fidera documentation
iOS onboarding SDK
Integrate Fidera’s headless Swift client, reusable SwiftUI, Universal Links, Keychain resume, capture, and passport NFC.
The Swift package publishes FideraSDK for headless orchestration and
FideraOnboardingUI for reusable SwiftUI. The onboarding client accepts only
an applicant capability; do not ship a tenant API key in an app.
Add the package
Add platforms/ios/FideraSDK as a Swift Package dependency while developing
locally, or use the published package version for a release. Link
FideraSDK; link FideraOnboardingUI when using the supplied journey shell.
Initialize one client for the app:
let onboarding = FideraOnboardingClient(
baseURL: URL(string: "https://verify.fideralabs.com")!
)KeychainOnboardingCredentialStore is the default. It keeps the rotating,
Flow-scoped session and a random installation identifier. It never persists
the original link fragment.
Handle a Universal Link
Add the Associated Domains entitlement:
applinks:verify.fideralabs.comRegister the production team ID and bundle ID in Fidera Settings. Pass the incoming URL directly to the client:
.onOpenURL { url in
Task {
try await onboarding.handle(universalLink: url)
let context = try await onboarding.context()
}
}Call resume() on launch. It returns an unexpired Keychain credential or
clears expired state. Use refresh() before expiry during long journeys.
Never log the incoming URL, because it contains the one-time fragment secret.
Build the journey
FideraOnboardingView supplies tenant branding, shared progress, neutral
completion, and capture orchestration hooks. Inject the SDK’s native camera,
MRZ, selfie, liveness, and passport-NFC screens or your own equivalent views.
Every semantic progress update includes version. On 409, reload context
and let the user continue from the returned current state. Retry signed
uploads by requesting a fresh grant after expiry; retry completion and
processing with a stable idempotency key.
For passports, photo and MRZ work without NFC. If the template marks NFC
required, use the native Core NFC reader before submission. If it is
optional, record lower assurance when the applicant chooses or must use the
photo/MRZ fallback. The server remains authoritative.
Migrate the proof of concept
The Acme demo no longer starts Flows with embedded tenant keys. Existing integrations should:
- remove tenant secret or publishable keys from
Info.plist, build settings, and app configuration; - register the app in Fidera Settings and enable Associated Domains;
- replace direct
FideraClient.createFlowcalls withFideraOnboardingClient.handle(universalLink:); - restore state from Keychain and shared Flow progress;
- replace any applicant-facing outcome view with neutral completion;
- read tenant-authenticated Check results on a trusted backend.
There is no App Clip target. E-passport chip reading requires an installed app with the full Core NFC entitlement and API surface.