Captura de NFC
Introducción
El Componente tratado en el documento actual recibe el nombre de NFC Component. Éste se encarga de realizar la lectura de nfc de documentos de identidad y pasaportes. Sus principales funcionalidades son las siguientes:
Gestión interna del sensor de NFC.
Gestión de permisos.
Análisis de documento.
Análisis del progreso.
Asistente en los procesos de lectura.
Devolución de toda la información posible a leer
Devolución de imágenes cuando estén disponible para su lectura
En el apartado de Lanzamiento simplificado se detallan los pasos necesarios para la integración básica del SDK. En esta sección se añade la información para el lanzamiento de este componente.
Dependencias
Para evitar conflictos y problemas de compatibilidad, en caso de querer instalar el componente en un proyecto que contenga una versión antigua de las librerías de Facephi (Widgets), éstos deberán eliminarse por completo antes de la instalación de los componentes de la SDKMobile.
Cocoapods
Las dependencias obligatorias que deberán haberse instalado previamente (añadiéndolas en el fichero Podfile del proyecto) son:
pod 'FPHISDKMainComponent', '~> 2.3.0'Para instalar el componente de NFC deberá incluirse la siguiente entrada en el Podfile de la aplicación:
SPM
Las dependencias obligatorias que deberán haberse instalado previamente son:
Para instalar el componente de NFC deberá incluirse en los módulos del proyecto:
Controladores disponibles
Controlador
Descripción
NFCController
Controlador principal de lectura NFC
Lanzamiento simplificado
Una vez iniciado el SDK y creada una nueva operación se podrá lanzar el componente. Se podrá hacer uso de cualquiera de sus controladores para ejecutar su funcionalidad.
Lanzamiento de la captura:
Configuración básica
Para lanzar el componente actual, se deberá crear un objeto NFCConfigurationData que será la configuración del controlador del componente.
La configuración básica necesaria para es la siguiente:
Los datos necesarios son los del documento que se va a capturar.
Recepción del resultado
Los controllers devolverán la información necesaria en formato SdkResult.
Recepción de errores
En la parte del error, internamente disponemos de la clase NFCPassportReaderError. Este enumerado contiene muchos errores específicos que no aportan información útil si son devueltos al integrador, por lo que son transformados a un tipo más simple (ErrorType):
NFC_CANCEL_BY_USER: El usuario ha cancelado el proceso.
NFC_COMPONENT_LICENSE_ERROR: La licencia del componente no es correcta.
NFC_EMPTY_LICENSE: El String de licencia está vacío.
NFC_EXTRACT_DATA_ERROR: Error en los datos extraídos.
NFC_INITIALIZATION_ERROR: Error de inicialización.
NFC_LAST_COMMAND_EXPECTED: Error en el comando de finalización
NFC_ERROR: Error general
NFC_ERROR_DATA: Error en los datos de entrada
NFC_ERROR_DISABLED: NFC deshabilitado
NFC_ERROR_ILLEGAL_ARGUMENT: NFC con un tag incorrecto
NFC_ERROR_IO: Error de entrada/salida
NFC_ERROR_NOT_SUPPORTED: NFC no soportado
NFC_ERROR_TAG_LOST: Conexión perdida
NFC_OPERATION_NOT_CREATED: No hay ninguna operación en curso.
NFC_TIMEOUT: Timeout en el proceso.
NOTA: NFC_INVALID_MRZ_KEY implica que la conexión no se ha podido establecer por culpa de que los datos de entrada de la configuración (documentNumber, birthDate, expiryDate) no son correctos. Todos los lanzamientos de lectura para ese NFC fallarán mientras no se inicialice un NFCController nuevo con los datos correctos.
Recepción de ejecución correcta - data
En la parte de data, dispondremos de la clase NfcResult.
En el caso de este componente, los campos devueltos son los siguientes:
nfcRawData
Información obtenida por cada tipo de dato en formato crudo.
nfcDocumentInformation
Información obtenida del documento ordenada por:
type
documentNumber
issuer
expirationDate
mrzString
nfcPersonalInformation
Información obtenida del documento ordenada por:
name
surname
address
nationality
personalNumber
birthdate
placeOfBirth
gender
nfcImages
Información de imágenes obtenida del documento ordenada por:
facialImage
fingerprintImage
signatureImage
nfcSecurityData
Información de datos de seguridad del documento ordenada por:
ldsVersion
dataGroupsHashes
dataGroupsRead
documentSigningCertificateData
issuerSigningCertificateData
nfcValidations
Información de las validaciones del documento ordenada por:
accessProtocol
activeAuthenticationSupported
activeAuthenticationValidation
chipAuthenticationValidation
dataGroupsHashesValidation
documentSigningValidation
issuerSigningValidation
personalData
issuer
documentNumber
issueDate
expiryDate
name
surname
fullName
gender
birthDate
birthPlace
nationality
address
nfcKey
numSupport
mrz
Información avanzada
Este apartado amplía la información del componente.
Configuración avanzada del componente
Para lanzar el componente actual, se deberá crear un objeto NFCConfigurationData que será la configuración del controlador del componente.
A continuación se detallan todos los campos que forman parte de esta clase.
documentNumber
Indica el número de documento o número de soporte dependiendo del documento a realizar la lectura.
Éste campo es obligatorio.
birthDate
Indica la fecha de nacimiento que aparece en el documento ("dd/MM/yyyy").
Éste campo es obligatorio.
expirationDate
Indica la fecha de expiración que aparece en el documento ("dd/MM/yyyy").
Éste campo es obligatorio.
extractionTimeout
Establece el tiempo máximo que se puede realizar la lectura.
showTutorial
Indica si el componente activa la pantalla de tutorial. En esta vista se explica de forma intuitiva cómo se realiza la captura.
vibrationEnabled
iOS no permite añadir vibración mientras se hacen lecturas de NFC.
enableDebugMode
Activación del modo depuración del componente.
skipPace
Indica que solo se desea realizar la lectura BAC de NFC. Es una lectura con información más simple y rápida que permite la lectura de más variedad de documentos.
showDiagnostic
Si se le da valor true, al producirse un error o una falta de permisos, el sdk mostrará una pantalla con el error devuelto por el widget.
issuer
Indicamos el pais de origen del documento a leer.
documentType
Indica el tipo de documento que se va a leer: - ID_CARD - PASSPORT - FOREIGN_CARD
Personalización del componente
Aparte de los cambios que se pueden realizar a nivel de SDK (los cuales se explican en el documento de Personalización del SDK), este componente en concreto permite la modificación de su interfaz.
Textos
Los textos pueden ser customizados sobreescribiendo el valor de las siguientes claves en un Localizable.strings. Las claves que contienen el sufijo _alt son los literales utilizados en las etiquetas de accesibilidad necesarias para la funcionalidad de voice over.
Name
Value
nfc_component_start_message
\nDesliza el documento\nhasta que el dispositivo lo detecte\n
nfc_component_reading_face_message
Extrayendo imagen de la cara.
nfc_component_reading_images_message
Extrayendo imágenes.
nfc_component_reading_document_message
Extrayendo los datos del documento.
nfc_component_error_retrieving_document_data_message
Ha ocurrido un error durante la captura de los datos del documento
nfc_component_read_successful_title
NFC leído exitosamente
nfc_component_error
¡Ups! El NFC no ha podido ser leído
text_error_tag_connection_lost
Lectura interrumpida. Vuelve a poner el documento en la parte superior.
text_error_tag_connection_lost_timer
Hubo un error en la lectura. Por favor, cancela para reiniciar el proceso.
nfc_component_timeout_desc
Has excedido el tiempo de lectura de NFC. Por favor intenta de nuevo
text_chip_duplicated_session_error
El proceso de captura se ha duplicado, por favor vuelva a intentarlo tras desaparecer este mensaje
text_chip_security_serial_number_title
Número de serie
text_chip_security_algorithm_sign_title
Algoritmo de firma
text_chip_security_algorithm_public_key_title
Algoritmo de clave pública
text_chip_security_certificated_impress_title
Impresión de certificado
text_chip_security_editor_title
Editor
text_chip_security_subject_title
Sujeto
text_chip_security_valid_from_title
Válido desde
text_chip_security_valid_still_title
Válido hasta
text_loading_optional_description
Leyendo, por favor, no mueva el documento
icon_loading_filled_circle
🟢
icon_loading_void_circle
⚪️
nfc_component_end_confirmation_title
Finalizar
nfc_component_end_confirmation_message
¿Seguro que finalizar el proceso?
nfc_component_cancel
Cancelar
nfc_component_agree
Aceptar
nfc_component_tutorial
Pon en contacto el documento con la parte trasera de tu dispositivo.
nfc_component_tutorial_iphone_15
Pon en contacto el documento con la parte delantera de tu dispositivo.
text_tutorial_nfc_title
Lectura de NFC
text_tutorial_nfc_button_ok
COMENZAR
text_tutorial_nfc_button_tip
MIRA ESTOS CONSEJOS
nfc_component_tutorial_title
Escanear NFC
nfc_component_tutorial_button_disabled
PREPARANDO NFC
nfc_component_tutorial_1
Cuando pasamos una tarjeta por un sensor, hay un intercambio de información llamado NFC.
nfc_component_tutorial_2
En tu móvil, el sensor está en la zona marcada. Aquí deberás juntar tu documento.
nfc_component_tutorial_3
Para una mejor lectura, quita la funda de tu móvil.
nfc_component_tutorial_3_pass
Mantén cerrado el pasaporte para hacer la lectura.
nfc_component_next
SIGUIENTE
nfc_component_previous
ANTERIOR
nfc_component_more_info_finish
FINALIZAR
diagnostic_tag_connection_lost_title
La lectura no finalizó
diagnostic_tag_connection_lost_description
De este modo, si se desea modificar por ejemplo el texto “COMENZAR” de la clave text_tutorial_nfc_button_ok para el idioma es-MX, se deberá ir al archivo Localizable.strings de la carpeta es-MX.lproj si es que existe (si no, se deberá crear) y ahí, añadir:
"text_tutorial_nfc_button_ok"="EMPEZAR";
Si un mensaje no se especifica en el fichero del idioma, este se rellenará con el mensaje por defecto.
Animaciones
Las animaciones a usar se inicializan similarmente en la variable animations con un diccionario, teniendo como valor una string con el nombre de la animación que se encuentre en xcassets que se desee usar.
Last updated