Captura de NFC
Este componente precisa de uma versão mínima do iOS13
Introdução
O Componente tratado no documento atual recebe o nome de Componente NFC. Este é responsável por realizar a leitura de NFC de documentos de identidade e passaportes. Suas principais funcionalidades são as seguintes:
Gerenciamento interno do sensor de NFC.
Gerenciamento de permissões.
Análise do documento.
Análise do progresso.
Assistente nos processos de leitura.
Retorno de todas as informações possíveis de serem lidas
Retorno de imagens quando estiverem disponíveis para leitura
Na seção de Lançamento simplificado são detalhados os passos necessários para a integração básica do SDK. Nesta seção é adicionada a informação para o lançamento deste componente.
Dependências
Para evitar conflitos e problemas de compatibilidade, caso queira instalar o componente em um projeto que contenha uma Versão antiga das bibliotecas da Facephi (Widgets), eles deverão ser removidos completamente antes da instalação dos componentes da SDKMobile.
CocoaPods
As dependências obrigatórias que devem ter sido instaladas previamente (adicionando-as no arquivo Podfile do projeto) são:
pod 'FPHISDKMainComponent', '~> $SDK_VERSION'Para instalar o componente de NFC, deverá ser incluída a seguinte entrada no Podfile do aplicativo:
SPM
As dependências obrigatórias que deverão ter sido instaladas previamente são:
Para instalar o componente de NFC, deverá ser incluído nos módulos do projeto:
Controladores disponíveis
Controlador
Descrição
NFCController
Controlador principal de leitura NFC
Lançamento simplificado
Uma vez iniciado o SDK e criada uma nova operação, será possível lançar o componente. Será possível fazer uso de qualquer um de seus controladores para executar sua funcionalidade.
Lançamento da captura:
Configuração básica
Para iniciar o componente atual, deverá ser criado um objeto NFCConfigurationData que será a configuração do controlador do componente.
A configuração básica necessária é a seguinte:
Os dados necessários são os do documento que será capturado.
Recebimento do resultado
Os controllers devolverão as informações necessárias no formato SdkResult.
Recebimento de erros
Na parte do erro, internamente dispomos da classe NFCPassportReaderError. Esse enumerado contém muitos erros específicos que não acrescentam informação útil se forem devolvidos ao integrador, por isso são transformados em um tipo mais simples (ErrorType):
NFC_CANCEL_BY_USER: O usuário cancelou o processo.
NFC_COMPONENT_LICENSE_ERROR: A Licença do componente não está correta.
NFC_EMPTY_LICENSE: A String de Licença está vazia.
NFC_EXTRACT_DATA_ERROR: Erro nos dados extraídos.
NFC_INITIALIZATION_ERROR: Erro de inicialização.
NFC_LAST_COMMAND_EXPECTED: Erro no comando de finalização
NFC_ERROR: Erro geral
NFC_ERROR_DATA: Erro nos dados de entrada
NFC_ERROR_DISABLED: NFC desabilitado
NFC_ERROR_ILLEGAL_ARGUMENT: NFC com um tag incorreto
NFC_ERROR_IO: Erro de entrada/saída
NFC_ERROR_NOT_SUPPORTED: NFC não suportado
NFC_ERROR_TAG_LOST: Conexão perdida
NFC_OPERATION_NOT_CREATED: Não há nenhuma operação em curso.
NFC_TIMEOUT: Timeout no processo.
NOTA: NFC_INVALID_MRZ_KEY significa que a conexão não pôde ser estabelecida porque os dados de entrada da configuração (documentNumber, birthDate, expiryDate) não estão corretos. Todas as tentativas de leitura para esse NFC falharão enquanto um novo NFCController não for inicializado com os dados corretos.
Recebimento de execução correta - data
Na parte de data, teremos a classe NfcResult.
No caso deste componente, os campos retornados são os seguintes:
nfcRawData
Informações obtidas de cada tipo de dado em formato bruto.
nfcDocumentInformation
Informações obtidas do documento organizadas por:
type
documentNumber
issuer
expirationDate
mrzString
nfcPersonalInformation
Informações obtidas do documento organizadas por:
name
surname
address
nationality
personalNumber
birthdate
placeOfBirth
gender
nfcImages
Informações de imagens obtidas do documento organizadas por:
facialImage
fingerprintImage
signatureImage
nfcSecurityData
Informações dos dados de segurança do documento organizadas por:
ldsVersion
dataGroupsHashes
dataGroupsRead
documentSigningCertificateData
issuerSigningCertificateData
nfcValidations
Informações das validações do documento organizadas por:
accessProtocol
activeAuthenticationSupported
activeAuthenticationValidation
chipAuthenticationValidation
dataGroupsHashesValidation
documentSigningValidation
issuerSigningValidation
personalData
issuer
documentNumber
issueDate
expiryDate
name
surname
fullName
gender
birthDate
birthPlace
nationality
address
nfcKey
numSupport
mrz
Informações avançadas
Esta seção amplia as informações do componente.
Configuração avançada do componente
Para iniciar o componente atual, deverá ser criado um objeto NFCConfigurationData que será a configuração do controlador do componente.
A seguir, estão detalhados todos os campos que fazem parte desta classe.
documentNumber
Indica o número do documento ou o número de suporte, dependendo do documento a ser lido.
Este campo é obrigatório.
birthDate
Indica a data de nascimento que aparece no documento ("dd/MM/yyyy").
Este campo é obrigatório.
expirationDate
Indica a data de expiração que aparece no documento ("dd/MM/yyyy").
Este campo é obrigatório.
extractionTimeout
Define o tempo máximo para realizar a leitura.
showTutorial
Indica se o componente ativa a tela de tutorial. Nessa tela é explicado de forma intuitiva como a captura é realizada.
vibrationEnabled
iOS não permite adicionar vibração durante as leituras de NFC.
enableDebugMode
Ativação do modo de depuração do componente.
skipPace
Indica que se deseja realizar apenas a leitura BAC de NFC. É uma leitura com informações mais simples e rápidas que permite a leitura de uma maior variedade de documentos.
showDiagnostic
Se lhe for dado o valor true, ao ocorrer um erro ou uma falta de permissões, o SDK mostrará uma tela com o erro retornado pelo Widget.
issuer
Indicamos o país de origem do documento a ser lido.
documentType
Indica o tipo de documento que será lido: - ID_CARD - PASSPORT - FOREIGN_CARD
activeAuthenticationChallenge
Este parâmetro permite injetar um desafio personalizado que pode ser verificado posteriormente para proteger contra ataques de repetição.
onlyPACE
Se for verdadeiro, detectará apenas documentos PACE/SAC. Disponível somente a partir de iOS ≥ 16. Requer a string PACE no arquivo de entitlements.
tagConnectionLostTimer
Antes existia um único temporizador que podia abranger mais de uma requisição quando a resposta era grande.
Personalização do componente
Além das alterações que podem ser feitas no nível do SDK (as quais são explicadas no documento de Personalização do SDK), este componente específico permite a modificação de sua interface.
Textos
Os textos podem ser personalizados sobrescrevendo o valor das seguintes chaves em um Localizable.strings. As chaves que contêm o sufixo _alt são os literais utilizados nas etiquetas de acessibilidade necessárias para a funcionalidade de VoiceOver.
Name
Valor
nfc_component_start_message
\nDeslize o documento\naté que o dispositivo o detecte\n
nfc_component_reading_face_message
Extraindo a imagem do rosto.
nfc_component_reading_images_message
Extraindo imagens.
nfc_component_reading_document_message
Extraindo os dados do documento.
nfc_component_error_retrieving_document_data_message
Ocorreu um erro durante a captura dos dados do documento
nfc_component_read_successful_title
NFC lido com sucesso
nfc_component_error
Ops! O NFC não pôde ser lido
text_error_tag_connection_lost
Leitura interrompida. Volte a colocar o documento na parte superior.
text_error_tag_connection_lost_timer
Houve um erro na leitura. Por favor, cancele para reiniciar o processo.
nfc_component_timeout_desc
Você excedeu o tempo de leitura de NFC. Por favor, tente novamente
text_chip_duplicated_session_error
O processo de captura foi duplicado; por favor, tente novamente após esta mensagem desaparecer
text_chip_security_serial_number_title
Número de série
text_chip_security_algorithm_sign_title
Algoritmo de assinatura
text_chip_security_algorithm_public_key_title
Algoritmo de chave pública
text_chip_security_certificated_impress_title
Impressão do certificado
text_chip_security_editor_title
Emissor
text_chip_security_subject_title
Sujeito
text_chip_security_valid_from_title
Válido desde
text_chip_security_valid_still_title
Válido até
text_loading_optional_description
Lendo, por favor, não mova o documento
icon_loading_filled_circle
🟢
icon_loading_void_circle
⚪️
nfc_component_end_confirmation_title
Encerrar
nfc_component_end_confirmation_message
Tem certeza de que deseja finalizar o processo?
nfc_component_cancel
Cancelar
nfc_component_agree
Aceitar
nfc_component_tutorial
Posicione em contato o documento com a parte traseira do seu dispositivo.
nfc_component_tutorial_iphone_15
Posicione em contato o documento com a parte frontal do seu dispositivo.
text_tutorial_nfc_title
Leitura de NFC
text_tutorial_nfc_button_ok
COMEÇAR
text_tutorial_nfc_button_tip
VEJA ESTAS DICAS
nfc_component_tutorial_title
Escanear NFC
nfc_component_tutorial_button_disabled
PREPARANDO NFC
nfc_component_tutorial_1
Quando aproximamos um cartão a um sensor, ocorre uma troca de informações chamada NFC.
nfc_component_tutorial_2
No seu celular, o sensor está na área marcada. Aqui você deverá aproximar o seu documento.
nfc_component_tutorial_3
Para uma melhor leitura, retire a capa do seu celular.
nfc_component_tutorial_3_pass
Mantenha fechado o passaporte para fazer a leitura.
nfc_component_next
PRÓXIMO
nfc_component_previous
ANTERIOR
nfc_component_more_info_finish
FINALIZAR
diagnostic_tag_connection_lost_title
A leitura não foi concluída
diagnostic_tag_connection_lost_description
Dessa forma, se desejar modificar, por exemplo, o texto “COMEÇAR” da chave text_tutorial_nfc_button_ok para o idioma es-MX, será necessário ir ao arquivo Localizable.strings da pasta es-MX.lproj caso exista (se não, será necessário criá-lo) e, então, adicionar:
"text_tutorial_nfc_button_ok"="EMPEZAR";
Se uma mensagem não for especificada no arquivo do idioma, ela será preenchida com a mensagem padrão.
Animações
As animações a usar são inicializadas de forma semelhante na variável animations com um dicionário, tendo como valor uma string com o nome da animação que esteja em xcassets que se deseje usar.
Atualizado