Saltar al contingut principal
Un SDK per a iOS lleuger i controlat pel servidor per a la verificació d’identitat, que requereix una configuració mínima. Última versió: 4.13.2.

Repositori de GitHub

Consulta el codi font, les versions i el registre de canvis complet a GitHub

SDK natiu: Aquesta és l’opció recomanada per a aplicacions iOS. Els SDK natius ofereixen la millor experiència d’usuari, una gestió de la càmera optimitzada i suport complet per a NFC.


Requisits

Compatibilitat amb les versions d’iOS

El consentiment biomètric requereix el SDK natiu 4.10.0 o posterior. Per a les persones cobertes per les lleis d’Illinois, Texas o Colorado, Didit pot demanar un consentiment biomètric explícit abans de la primera captura facial. L’SDK d’iOS 4.10.0 i les versions posteriors mostren aquest pas. Les versions anteriors no el poden mostrar: les seves sessions s’executen com abans, i la decisió indica que el consentiment no s’ha recollit (biometric_consent.reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"). Actualitza si verifiques persones en aquests estats.

Installation

Des de 4.0.0, el SDK es distribueix en diverses variants instal·lables, de manera que la teva aplicació només paga el cost binari de les funcionalitats que utilitza. Tria exactament una variant: un subspec de CocoaPods i un producte de biblioteca de SwiftPM.
  • Core: la menor mida, amb captura automàtica de document i selfie amb els detectors lleugers propis de Didit. Sense OpenSSL.xcframework ni runtime de CoreNFC.
  • AutoDetection: obsolet des de 4.11.0 i idèntic a Core; utilitza Core en lloc seu.
  • NFC: Core més la lectura de xips de passaports i eID amb NFC.
  • All: totes les funcionalitats. És la variant per defecte quan instal·les DiditSDK sense indicar cap subspec ni producte.
Què afegeix cada variant al paquet de la teva aplicació (binari Mach-O arm64, mesurat en comparació amb 4.9.0): Core ~11,1 MB, NFC ~11,7 MB més ~4 MB d’OpenSSL, AutoDetection ~16,0 MB, All ~16,6 MB més OpenSSL. Els models de detecció es descarreguen en temps d’execució i s’emmagatzemen a la memòria cau, de manera que mai no compten en la mida de descàrrega de la teva aplicació. Des de 4.11.0, la captura automàtica s’executa amb els detectors lleugers propis de Didit en totes les variants. TensorFlow Lite ja no forma part del SDK, i el framework és més petit perquè les seves traduccions es carreguen des de fora del binari. Des de 4.6.0, els frameworks distribuïts ja no inclouen descriptors d’ABI de Swift (metadades de compilació que Xcode copiava a cada aplicació però mai no llegia) ni vídeos tutorials que la variant no pot reproduir. Si actualitzes des de 4.5.4 o una versió anterior, la teva aplicació es redueix en uns 7-8 MB només amb això, sense cap canvi de codi. L’App Store comprimeix els binaris per al lliurament, de manera que el cost de descàrrega per via aèria és menor; consulta l’informe de mida de l’aplicació a App Store Connect per conèixer la diferència exacta per dispositiu.
Les variants NFC i All inclouen OpenSSL.xcframework (OpenSSL 3.3.3, distribuït com a OpenSSL-Universal 3.3.3001 a través de NFCPassportReader), necessari per a l’autenticació del xip NFC i que requereix iOS 15.0+. Les versions fins a la 4.0.6 inclosa incloïen OpenSSL 1.1.1s; les 4.0.7 i posteriors distribueixen OpenSSL 3.3.3 amb el seu propi manifest de privacitat i la seva signatura de codi. Instal·la sempre la 4.0.7 o posterior. Tingues en compte que actualitzar alinea les versions d’OpenSSL però no elimina els conflictes d’incrustació: si una altra dependència de la teva aplicació també incrusta un OpenSSL.framework (mateix nom de fitxer, mateix identificador de paquet com.github.krzyzanowskim.OpenSSL), les dues còpies col·lisionen en el pas d’incrustació, independentment de la versió. Mantén exactament una còpia: per exemple, substitueix l’altre paquet per identitat de SPM per utilitzar el OpenSSL.xcframework publicat per Didit, de manera que el binari del paquet sigui aquell contra el qual s’ha compilat aquest SDK. Les variants Core i AutoDetection no enllacen cap OpenSSL.
import DiditSDK és el mateix al codi de la teva aplicació, independentment de la variant que instal·lis.

Swift Package Manager (recomanat)

Afegeix el paquet al teu projecte amb Xcode:
  1. Ves a File > Add Package Dependencies
  2. Introdueix la URL del repositori:
  1. Selecciona la versió (o Up to Next Major a partir de 4.13.2) i fes clic a Add Package
  2. Quan se’t demani que triïs un producte, tria exactament un producte de biblioteca per a la teva variant (consulta la taula de dalt)
O bé al teu Package.swift:
A continuació, afegeix exactament un d’aquests productes al teu target:
Swift Package Manager no t’imposa el requisit mínim d’iOS 15. Package.swift declara platforms: [.iOS(.v13)] per a tot el paquet, de manera que Xcode et deixarà afegir DiditSDK o DiditSDKNFC a un target d’iOS 13 o 14 sense cap avís; però tots dos inclouen OpenSSL.xcframework i llegeixen els xips a través de NFCPassportReader, que requereixen iOS 15.0+. Quan utilitzis el producte All o NFC, defineix tu mateix l’objectiu de desplegament del teu objectiu a 15.0. CocoaPods ho aplica automàticament mitjançant el deployment_target del subspec.

CocoaPods

DiditSDK es distribueix com a podspec binari allotjat al repositori (no és al Trunk públic de CocoaPods), de manera que has de referenciar la URL del podspec. Tria exactament un subspec:
Core i AutoDetection són compatibles amb iOS 13 com a versió mínima; NFC i All requereixen iOS 15 per NFCPassportReader. A continuació, executa:
Després de pod install, obre el .xcworkspace generat (no el .xcodeproj).
Errors de rsync a Xcode 15+: si veus errors de rsync Operation not permitted durant la compilació, defineix Build Settings → User Script Sandboxing (ENABLE_USER_SCRIPT_SANDBOXING) a No al projecte, tant per a Debug com per a Release.

Manual (XCFramework)

Cada versió publica un XCFramework per variant. Descarrega els zips de la teva variant des de GitHub Releases, després arrossega les carpetes .xcframework a Xcode i defineix Embed & Sign.

Permisos

El SDK requereix els permisos següents. Afegeix-los al Info.plist de la teva aplicació:

Exemples d’entrades per a Info.plist

Configuració de NFC

Obligatori només en instal·lar la variant NFC o All. Omet aquesta secció si has instal·lat la variant Core o AutoDetection. Per habilitar la lectura NFC de passaports i targetes d’identitat amb xip:
  1. Afegeix la capacitat NFC a Xcode:
    • Selecciona l’objectiu → Signing & Capabilities → + Capability → Near Field Communication Tag Reading
  2. Afegeix els identificadors ISO7816 a Info.plist:
D392F000260100000001 permet que l’SDK llegeixi la My Number Card del Japó a través de JPKI: sense aquest identificador, iOS no informa l’SDK de la targeta. La lectura de la My Number Card encara no està habilitada en producció, i l’identificador no canvia res per a altres documents, així que pots afegir-lo ara.
  1. Afegeix els Entitlements (al teu fitxer .entitlements):
Limitació del simulador (variants NFC i All): Aquestes variants enllacen amb CoreNFC, i des de Xcode 12 falta libnfshared.dylib als simuladors. Consulta aquest fil de Stack Overflow per a una solució alternativa. Això no s’aplica a les variants Core o AutoDetection. Prova les funcionalitats NFC només en dispositius físics.

Revisió a l’App Store (variants NFC i All): si instal·les la variant NFC o All, Apple pot demanar un vídeo de demostració durant la revisió perquè el codi relacionat amb NFC forma part del binari de l’SDK, fins i tot si el teu flux de treball no utilitza NFC. Sol·licita el nostre vídeo de demostració NFC per enviar-lo a Apple a support@didit.me. Això no s’aplica a la variant Core o AutoDetection.


Inici ràpid

Integració amb SwiftUI

Integració amb UIKit


Mètodes d’integració

L’SDK admet dos mètodes d’integració: No requereix backend. L’SDK crea la sessió directament amb l’ID del teu flux de treball de la Didit Console. El mètode UniLink (startVerification(workflowId:)) només admet vendorData; per a qualsevol altre paràmetre de sessió, utilitza el mètode 2.
Perquè vendorData s’associï a la sessió mitjançant UniLink, activa l’opció Dades del proveïdor a la Didit Console.

Mètode 2: Sessió al backend (recomanat per a producció)

El backend crea la sessió mitjançant l’API per crear sessions de verificació (POST /v3/session/) amb suport complet de paràmetres (contact_details, expected_details, metadata, callback, etc.), i després passa el session_token a l’SDK.
Aquest enfocament et dona control total sobre:
  • Associar les sessions amb els teus usuaris (vendor_data)
  • Definir les dades de contacte i les dades esperades per a la validació creuada
  • Definir metadades personalitzades
  • Configurar els callbacks per sessió Aquestes dades (dades de contacte, dades esperades, metadades, callback) s’envien a l’API per crear sessions de verificació.

Configuració

Personalitza el comportament del SDK amb DiditSdk.Configuration:

Opcions de configuració

Opcions de càmera

Les opcions de càmera coincideixen amb les opcions de càmera del Web SDK. Cada òptica és .front o .back. Si el dispositiu no té l’òptica sol·licitada, el SDK utilitza la primera càmera que tingui. El selector de càmera també s’amaga en els dispositius que només tenen una càmera. Estableix una opció del selector a false per limitar l’usuari a l’òptica per defecte d’aquest pas.
Personalització i colors: Els colors, els fons i la configuració de les pantalles d’introducció es configuren mitjançant la configuració de marca blanca a la Didit Console, i no a la configuració del SDK. Així es garanteix una imatge de marca coherent a totes les plataformes.
Les opcions showLanguageSelector, showCloseButton, showExitConfirmation i closeOnComplete coincideixen amb el DiditSdkConfiguration del Web SDK. Les opcions específiques del mòbil languageLocale i fontFamily existeixen perquè el SDK per a mòbil renderitza la interfície de verificació completa de manera nativa (a diferència del Web SDK, que delega al frontend allotjat dins d’un iframe).

Suport d’idiomes

El SDK admet 54 idiomes. Si no s’especifica cap idioma, el SDK utilitza l’idioma del dispositiu, amb l’anglès com a alternativa.
Consulta tots els idiomes admesos →

Paràmetres avançats de la sessió

Per als paràmetres avançats de la sessió (contact_details, expected_details, metadata, callback), utilitza el mètode Backend Session. El teu backend crida l’API per crear una sessió de verificació amb tots els paràmetres i després passa el session_token al SDK.

Gestió dels resultats

L’enumeració VerificationResult proporciona el resultat de la verificació:

Casos de resultat

Propietats de SessionData

Tipus d’error

Connexió perduda

Si el dispositiu perd la connexió durant la verificació, el SDK mostra una pantalla de «Sense connexió a Internet» que cobreix el flux, en lloc de deixar un pas en estat de càrrega. Continua comprovant la connexió en segon pla i tanca la pantalla automàticament en el moment en què es pot tornar a contactar amb Didit, i l’usuari continua des del pas on era. La pantalla ofereix Torna-ho a provar i, quan showCloseButton és true (el valor per defecte), Surt de la verificació. En sortir, la verificació finalitza amb .failed(error: .networkError, session:), de manera que la teva aplicació sap que l’usuari ha sortit a causa del problema de connexió.

Exemple complet de gestió de resultats


Tancar la verificació de manera programàtica

Disponible a partir de la versió 3.6.0+ de DiditSDK.
L’aplicació amfitriona pot finalitzar una verificació activa de manera programàtica amb DiditSdk.shared.dismiss(). Aquesta és la manera recomanada de tancar la verificació quan l’aplicació amfitriona necessita prendre el control de la pantalla, per exemple quan l’aplicació passa a segon pla.
dismiss() segueix el flux de finalització normal del SDK: tanca la interfície presentada, reinicia l’estat intern i invoca el gestor .diditVerification amb .cancelled(session:), que inclou el sessionId actual si s’ha creat una sessió. No fa res si no hi ha cap verificació activa.

Exemple: tancar la verificació quan l’aplicació passa a segon pla

No estableixis DiditSdk.shared.isPresented = false per tancar la verificació. Aquest indicador només activa la presentació en el seu flanc ascendent, i establir-lo a false no fa res. De la mateixa manera, no s’admet cridar dismiss(animated:) de UIKit sobre el controlador de vista superior, perquè salta el flux de finalització del SDK i el gestor .diditVerification no s’executarà mai.

Observar l’estat del SDK

Pots observar l’estat del SDK per crear una interfície de càrrega personalitzada:

Exemple de principi a fi (sessió al backend → SDK d’iOS → resultat)

Aquest patró és la integració a punt per a producció. El teu backend crea la sessió, la teva aplicació d’iOS rep el session_token i el SDK executa el flux.

1. Backend: crear la sessió

2. iOS: intercanviar el token i iniciar el SDK

3. Backend: rebre la decisió final mitjançant webhook

El resultat del SDK és útil per donar retroacció a la interfície, però el resultat definitiu arriba mitjançant webhook. Consulta la Guia de webhooks per a la verificació HMAC.

Exemple complet de SwiftUI


Darrera modificació el 7 de novembre del 2026