Captura de NFC

Introducción

La captura facial se realiza con el NFC Component.

Este componente se encarga de realizar la lectura del NFC de los documentos de identidad y pasaportes. Sus principales procesos son:

  • 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.

Dependencia

La dependencia específica del componente es:

implementation "com.facephi.androidsdk:nfc_component:$sdk_nfc_component_version"{
      exclude group : "org.bouncycastle", module : "bcprov-jdk15on"
      exclude group : "org.bouncycastle", module : "jetified-bcprov-jdk15on-1.68"
  }

Además habrá que añadir en gradle:

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

El lanzamiento devolverá la información en formato SdkResult. Pudiendo diferenciarse entre un lanzamiento correcto y uno incorrecto:

Recepción de errores

Los errores se devolverán como un objeto 'NfcError'.

Listado de errores:

  • NFC_APPLICATION_CONTEXT_ERROR: El contexto de aplicación necesario es nulo.

  • NFC_CANCEL_BY_USER: El usuario ha cancelado el proceso.

  • NFC_CANCEL_LAUNCH: Se ha hecho una cancelación general del SDK.

  • 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_FETCH_DATA_ERROR: Error en la recogida del resultado.

  • NFC_FLOW_ERROR: Error en el proceso de flow.

  • NFC_INITIALIZATION_ERROR: Error de inicialización.

  • NFC_LAST_COMMAND_EXPECTED: Error en el comando de finalización

  • NFC_MANAGER_NOT_INITIALIZED: Los managers son nulos.

  • 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.

Recepción del resultado correcto - data

En la parte de SdkResult.Success - data, dispondremos de la clase NfcResult.

El resultado devuelve las imágenes en formato SdkImage, es posible extraer el bitmap accediendo a image.bitmap. Si se quisiera convertir a base64 se puede utilizar la función:

Base64.encodeToString(this.toByteArray(), Base64.NO_WRAP)

Los campos devueltos en el resultado son los siguientes:

nfcRawData

Información obtenida por cada tipo de dato en formato crudo.

nfcDocumentInformation

Información obtenida del documento ordenada por:

  • documentNumber

  • expirationDate

  • issuer

  • mrzString

  • type

nfcPersonalInformation

Información obtenida del documento ordenada por:

  • address

  • birthdate

  • city

  • gender

  • name

  • nationality

  • personalNumber

  • placeOfBirth

  • surname

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:

  • dataGroupsHashes

  • dataGroupsRead

  • documentSigningCertificateData

  • issuerSigningCertificateData

  • ldsVersion

nfcValidations

Información de las validaciones del documento ordenada por:

  • accessType

  • activeAuthenticationSupported

  • activeAuthenticationValidation

  • chipAuthenticationValidation

  • dataGroupsHashesValidation

  • documentSigningValidation

  • issuerSigningValidation

nfcCertificateData

Información del certificado X509 obtenido del documento ordenada por.

  • X509Certificate

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.

showReadingScreen

Establece si se desea mostrar la pantalla modal inferior con la lectura que se está realizando. Si se desactiva, no se muestra ninguna vista y se deberán escuchar los estados que devuelve el controlador.

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

Indica si se desea un feedback de vibración al acabar el proceso.

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

Mostrar pantallas de diagnóstico al final del proceso

extractFacialImage

Indica si quiere extraer la imagen de la cara.

extractSignatureImage

Indica si quiere extraer la imagen de la firma.

documentType

Campo utilizado para cambiar la vista de tutorial y que muestre los diferentes documentos.

showPreviousTip

Muestra una pantalla previa al lanzamiento de la captura con información sobre el proceso a realizar y un botón para el lanzamiento.


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

Si se desea modificar los textos de la SDK habría que incluir el siguiente fichero XML en la aplicación del cliente, y modificar el valor de cada String por el deseado.

Name

Value

nfc_component_start_message

Desliza el documento\nhasta que el sensor lo detecte.

nfc_component_reading_message

Mantén la posición.

nfc_component_reading_face_message

Extrayendo imagen de la cara.

nfc_component_reading_images_message

Extrayendo imágenes.

nfc_component_reading_fingerprint_message

Extrayendo huella.

nfc_component_reading_signature_message

Extrayendo firma.

nfc_component_reading_mrz_message

Extrayendo MRZ.

nfc_component_reading_document_message

Extrayendo los datos del documento.

nfc_component_ready_to_scan

Listo para escanear

nfc_component_reading_device

Leyendo dispositivo

nfc_component_in_progress

En progreso:

nfc_component_connector_of

de

nfc_component_error

El NFC no se ha podido\nleer correctamente

nfc_component_retry

Reintentar

nfc_component_finish

Lectura finalizada

nfc_component_not_finish

Lectura incompleta

nfc_component_tutorial

Pon <b>en contacto</b> el documento con la parte trasera de tu dispositivo.

nfc_component_tutorial_button

Continuar

nfc_component_tutorial_title

Lectura de 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 <b> cerrado </b> el pasaporte para hacer la lectura.

nfc_component_tutorial_more_info_button

Mira estos consejos

nfc_component_timeout_title

Sigue las instrucciones

nfc_component_timeout_desc

Junta el documento <b>después</b> de pulsar el <b>botón comenzar.</b>

nfc_component_internal_error_title

Hubo un problema técnico

nfc_component_internal_error_desc

Pedimos disculpas. No se ha podido hacer la captura

nfc_component_data_error_title

No se pudo leer el documento

nfc_component_data_error_desc

Revisa los datos introducidos

nfc_component_read_not_finish_title

La lectura no finalizó

nfc_component_read_not_finish_desc

Mantén la posición hasta que finalice la lectura.

nfc_component_exit_alert_cancel

Cancelar

nfc_component_close_alt

Cerrar proceso

Animaciones

Si se desea modificar las animaciones (lottie) de la SDK habría que incluir las animaciones con el mismo nombre en la carpeta res/raw/ de la aplicación.

Vistas externas

Es posible modificar completamente las pantallas del componente manteniendo su funcionalidad y navegación. Para ello deben implementarse los interfaces siguientes:

Pantalla de tip previo:

Pantalla de diagnóstico de error:

Pantallas del diálogo de lectura:

Una vez creadas las clases que implementan los interfaces, en el lanzamiento del componente se podrá añadir el parámetro "customViews" para que se utilicen en el SDK.

Last updated