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