Captura de Impressão Digital - Phingers
Este componente requer uma versão mínima do iOS13
Introdução
O Componente tratado no documento atual recebe o nome de Phingers Component. Ele é responsável por realizar a captura das impressões digitais dos dedos (fingerprints) do usuário e a posterior extração dos templates das impressões digitais subsequentes. Suas principais funcionalidades são as seguintes:
Dois modos de funcionamento: extração dos quatro dedos da mão (exceto o polegar) ou extração apenas do polegar.
Gerenciamento interno da câmera.
Gerenciamento de permissões.
Detecção de vivacidade incorporada.
Assistente nos processos de captura das impressões digitais.
Geração dos templates com as características das impressões digitais, imagens e pontuações.
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 se 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
pod 'FPHISDKMainComponent', '~> $VERSION'Para instalar o componente atual, deverá ser incluída a seguinte entrada no Podfile da aplicação:
pod 'FPHISDKPhingersTFComponent', '~> $VERSION'Uma vez instaladas as dependências, será possível fazer uso das diferentes funcionalidades do componente.
SPM
As dependências obrigatórias que deverão ter sido instaladas previamente são:
Para instalar o componente de Selphid, deverá ser incluído nos módulos do projeto:
Permissões
Na aplicação cliente onde os componentes forem integrados, é necessário incorporar o seguinte elemento no arquivo Info.plist:
Controladores disponíveis
Controlador
Descrição
PhingersController
Controlador principal de captura de impressões digitais
Lançamento simplificado
Configuração básica
Para lançar o componente atual, deverá ser criado um objeto PhingersConfigurationData que será a configuração do controlador do componente.
A configuração básica necessária é a seguinte:
As diferentes orientações são:
LEFT
RIGHT
Os diferentes filtros são:
SLAP
ALL_4_FINGERS_ONE_BY_ONE
ALL_5_FINGERS_ONE_BY_ONE
INDEX_FINGER
MIDDLE_FINGER
RING_FINGER
LITTLE_FINGER
THUMB_FINGER
Recebimento do resultado
Os controllers devolverão a informação necessária no formato SdkResult.
Recebimento de erros
Na parte do erro, teremos a classe comum ErrorType:
PHG_CANCEL_BY_USER: O usuário cancelou o processo.
PHG_COMPONENT_LICENSE_ERROR: A licença do componente não está correta.
PHG_EMPTY_LICENSE: O String da licença está vazia.
PHG_INITIALIZATION_ERROR: Erro de inicialização.
PHG_INTERNAL_ERROR: Erro interno.
PHG_LOW_QUALITY: Baixa qualidade da imagem.
PHG_OPERATION_NOT_CREATED: Não há nenhuma operação em andamento.
PHG_CAMERA_PERMISSION_DENIED: O usuário recusou as permissões.
PHG_CAMERA_FAILURE: Falha da câmera.
PHG_FINGERPRINT_TEMPLATE_IO_ERROR: Falha de I/O
PHG_NO_FINGERS_DETECTED: Erro na detecção de impressões digitais
PHG_TIMEOUT: Timeout no processo.
Recebimento de execução correta - data
Na parte de data, teremos a classe PhingersResult.
O campo data é variável e dependerá de qual componente devolveu o resultado. No caso deste componente, os campos devolvidos são os seguintes:
Fingers
position
Retorna um inteiro que representa o elemento capturado. Este valor é definido de acordo com as instruções do NIST_POS_CODE.
displayImage
Contém a imagem processada.
wsq
A impressão digital em formato WSQ.
minutiaesNumber
Retorna o número de minúcias encontradas na captura biométrica.
quality
Inteiro que representa a qualidade do elemento processado.
nistQuality
Inteiro que representa a qualidade do elemento processado usando os padrões NIST.
nist2Quality
Inteiro que representa a qualidade do elemento processado usando uma versão alternativa dos padrões NIST.
livenessScore
Contém um valor do indicador de confiança na captura.
template
Contém o template gerado.
SlapImages
position
Retorna um inteiro que representa o elemento capturado. Este valor é definido de acordo com as instruções do NIST_POS_CODE.
image
Contém a imagem processada.
livenessScore
Contém um valor do indicador de confiança na captura.
Informações avançadas
Esta seção amplia as informações do componente.
Configuração avançada do componente
Para lançar o componente atual, deverá ser criado um objeto PhingersConfigurationData que será a configuração do controlador do componente.
A seguir, são detalhados todos os campos que fazem parte desta classe.
reticleOrientation
Configura qual mão será capturada. Os valores permitidos são:
LEFT: Ativa a captura dos dedos da mão esquerda.
RIGHT: Ativa a captura dos dedos da mão direita.
fingerFilter
Configura o modo de detecção de impressões digitais que será usado durante a captura. Os valores permitidos são:
INDEX_FINGER: Configura a captura com o dedo indicador.
MIDDLE_FINGER: Configura a captura com o dedo médio.
RING_FINGER: Configura a captura com o dedo anelar.
LITTLE_FINGER: Configura a captura com o dedo mindinho.
THUMB_FINGER: Configura a captura com o dedo polegar.
SLAP: Configura a captura dos quatro dedos com uma só foto.
ALL_4_FINGERS_ONE_BY_ONE: Configura a captura dos quatro dedos fazendo uma foto para cada um deles.
ALL_5_FINGERS_ONE_BY_ONE: Configura a captura dos cinco dedos fazendo uma foto para cada um deles.
templateType
Especifica o template com o qual a impressão digital será devolvida no resultado. O enumerado TemplateType tem os seguintes valores possíveis:
ISO_TEMPLATE: Este template faz referência ao padrão ISO/IEC 19794-4.
NIST_TEMPLATE: Este template faz referência ao padrão NIST.
NIST_TF_TEMPLATE: Este é o valor padrão. Este template faz referência a uma variante do padrão NIST que facilita o processamento e a avaliação da amostra.
extractionTimeout
Define o tempo máximo que a leitura pode durar.
showPreviousTip
Mostra uma tela prévia ao lançamento da captura com informações sobre o processo a ser realizado e um botão para o lançamento.
showTutorial
Indica se o componente ativa a tela de tutorial. Nesta visualização é explicado de forma intuitiva como a captura é realizada.
vibrationEnabled
Se receber o valor true, a vibração é ativada em erros e quando a resposta do widget é OK.
showDiagnostic
Mostrar telas de diagnóstico ao final do processo.
livenessThreshold
Configura o limiar de liveness do detector de impressões digitais. Substitui o antigo parâmetro único threshold (desde 2.8.1). Valor padrão: 0,9.
detectorThreshold
Configura o limiar do detector de impressões digitais. Substitui o antigo parâmetro único threshold (desde 2.8.1). Valor padrão: 0,9.
Nas versões 2.8.0 e anteriores existia um único parâmetro threshold (por padrão 0.7). Ao atualizar para 2.8.1, substitua-o por livenessThreshold e detectorThreshold (por padrão 0.9).
enableFlash
Ativa o flash durante a captura. Valor padrão: false. A partir de 2.8.1, o flash também pode ser ativado automaticamente se o processo detectar pouca luz na imagem para melhorar o processo de captura, embora o parâmetro esteja em false.
showEllipses
Desenha uma elipse durante a captura quando uma possível impressão digital é detectada.
cropWidth & cropHeight
Indica uma largura e altura para realizar um recorte da captura.
showPreviousFingerSelector
Indica se a tela "showPreviousFingerSelector" é exibida ou não.
fingerSelectorHandOrientation
Indica quais opções de mão serão mostradas na tela PreviousFingerSelectorView.
fingerSelectorOptions
Indica quais opções de dedos serão mostradas na tela PreviousFingerSelectorView.
Personalização do componente
Além das mudanças que podem ser feitas no nível do SDK (as quais são explicadas no documento de Personalização do SDK), este componente em 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.
Dessa forma, se desejar modificar, por exemplo, o texto “Começar” da chave phingers_widget_tip_button para o idioma es, deverá-se ir ao arquivo Localizable.strings da pasta es.lproj se ele existir (se não, deverá ser criado) e, então, adicionar:
"phingers_widget_tip_button"="Start";
Se uma mensagem não for especificada no arquivo do idioma, ela será preenchida com a mensagem padrão.
Animações
Se desejar modificar as animações (lottie) do SDK, seria necessário incluir as animações com o mesmo nome na pasta Resources da aplicação.
Atualizado