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