passive-face-liveness-ionic-nosentry
v1.0.2
Published
PassiveFaceLivenessPlugin
Maintainers
Readme
PassiveFaceLiveness - Ionic Plugin
Plugin que chama os SDKs nativos em Android e iOS. Caso tenha alguma dúvida, envie um email para o nosso Head of Mobile
Atualmente, os documentos suportados são RG, CNH, RNE e CRLV. Caso tenha alguma sugestão de outro documento, contate-nos!
Políticas de privacidade e termos e condições de uso
Ao utilizar nosso plugin, certifique-se que você concorda com nossas Políticas de privacidade e nossos Termos e condições de uso.
Configurações
Android
No arquivo ROOT_PROJECT/android/app/build.gradle, adicione:
android {
...
dataBinding.enabled = true
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}Importe o pacote e chame o método add() dentro da inicialização em android/app/src/main/java/io/ionic/starter/MainActivity.java:
import com.passive.PassiveFaceLivenessPlugin;
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerPlugin(PassiveFaceLivenessPlugin.class);
}
}
iOS
No arquivo ROOT_PROJECT/ios/App/Podfile, adicione no final do arquivo:
source 'https://github.com/combateafraude/iOS.git'
source 'https://cdn.cocoapods.org/' # ou 'https://github.com/CocoaPods/Specs' se o CDN estiver fora do arPor último, adicione a permissão de câmera no arquivo ROOT_PROJECT/ios/App/Runner/Info.plist:
<key>NSCameraUsageDescription</key>
<string>To read the documents</string>Ionic
Adicione o plugin no seu arquivo ROOT_PROJECT/package.json:
"dependencies": {
"passive-face-liveness-plugin": "https://github.com/combateafraude/Ionic/archive/refs/tags/passive-face-liveness-v6.1.0.tar.gz"
}Após, execute:
- npm install
- ionic capacitor build < platform > [ options ]
Importando
import {PassiveFaceLiveness} from 'passive-face-liveness-plugin';
Utilizando
let passiveFaceLivenessor = new PassiveFaceLiveness();
passiveFaceLivenessor.setMobileToken = '<your mobile token>';
const response = await passiveFaceLivenessor.start();
if(response.result == "SUCCESS"){
// Sucesso
}else if(response.result == "FAILURE"){
// Falha. Confira reponse.type e response.message
}else{
// Usuário fechou a tela
}
Customizações gerais
| PassiveFaceLiveness |
| --------- |
| .setPeopleId(String peopleId)CPF do usuário que está utilizando o plugin à ser usado para detecção de fraudes via analytics |
| .setAnalyticsSettings(bool useAnalytics)Habilita/desabilita a coleta de dados para maximização da informação antifraude. O padrão é true |
| .enableSound(bool enable)Habilita/desabilita os sons. O padrão é true |
| .setNetworkSettings(int requestTimeout)Altera as configurações de rede padrão. O padrão é 60 segundos |
| .setShowPreview(ShowPreview showPreview) Preview para verificação de qualidade da foto |
| .setAndroidSettings(AndroidSettings androidSettings)Customizações somente aplicadas em Android |
| .setIosSettings(IosSettings iosSettings)Customizações somente aplicadas em iOS |
| .setCaptureMode(CaptureMode captureMode ) Define as configurações de captura |
| .setEyesClosedSettings(enable: boolean, threshold?:number ) Permite customizar as configurações de validação de olhos abertos do SDK. O método espera como parâmetro enable para habilitar ou não a validação, e threshold, valor entre 0.0 e 1.0 |
| CaptureMode |
| --------- |
| videoCapture: VideoCapture(use: boolean, time: number) Configura a captura por vídeo |
| imageCapture: ImageCapture(use: boolean, beforePictureMillis: number, afterPictureMillis: number)Configura a captura por foto |
Exemplo de uso
let imageCapture = new ImageCapture({use: true});
let captureMode = new CaptureMode({imageCapture: imageCapture});
passiveFaceLiveness.setCaptureMode = captureMode;| ShowPreview |
| --------- |
| bool showHabilita/Desabilita preview |
| String titleTítulo |
| String subTitleSubtítulo |
| String confirmLabelTexto do botão de confirmação |
| String retryLabelTexto do botão de capturar novamente |
Android
| AndroidSettings constructor |
| --------- |
| PassiveFaceLivenessCustomizationAndroid customizationCustomização do layout em Android da activity |
| CaptureSettings captureSettingsConfiguraçōes de tempos de estabilização para a captura da selfie |
| SensorSettingsAndroid sensorSettingsCustomização das configurações dos sensores de captura |
| int showButtonTimeAltera o tempo para a exibição do botão de captura manual. O padrão é 20000 milisegundos |
| bool useEmulatorPermite habilitar/desabilitar o uso de dispositivos emulados no SDK, recomendamos desabilitar o uso dos emuladores por questões de segurança. O padrão é false |
| bool useRootPermite habilitar/desabilitar o uso de dispositivos com root no SDK, recomendamos desabilitar o uso desses dispositivos por questões de segurança. O padrão é false |
| bool useDeveloperModePermite habilitar/desabilitar o uso de dispositivos com o modo de desenvolvedor Android ativado. Recomendamos desabilitar o uso desses dispositivos por questões de segurança. O padrão é False |
| bool useAdbPermite habilitar/desabilitar o uso do modo de depuração Android Debug Bridge (ADB). Recomendamos desabilitar o uso desses dispositivos por questões de segurança. O padrão é False |
| bool useDebugPermite o uso do app em modo debug quando true. Não é recomendado ativar esta opção, utilize apenas para fins de testes. O padrão é False |
| bool enableBrightnessIncreaseHabilita/desabilita o incremento de brilho do dispositivo do dispositivo na abertura do SDK |
Exemplo de uso
let passiveFaceLiveness = new PassiveFaceLiveness();
passiveFaceLiveness.setAndroidSettings = new AndroidSettings({useEmulator: false});| PassiveFaceLivenessCustomizationAndroid constructor |
| --------- |
| String styleResIdNameNome do style resource que define as cores do SDK. Por exemplo, caso deseje mudar as cores do SDK, crie um style em ROOT_PROJECT/android/app/src/main/res/values/styles.xml com o nome R.style.my_custom_style seguindo o template e parametrize "my_custom_style" |
| String layoutResIdNameNome do layout resource que substituirá o layout padrão do SDK. Por exemplo, caso deseje mudar o layout do SDK, crie um layout em ROOT_PROJECT/android/app/src/main/res/layout/my_custom_layout.xml seguindo o template e parametrize "my_custom_layout" |
| String greenMaskResIdNameNome do drawable resource à substituir a máscara verde padrão. Caso for usar este parâmetro, use uma máscara com a mesma área de corte, é importante para o algoritmo de detecção. Por exemplo, salve a imagem da máscara em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_green_mask.png e parametrize "my_custom_green_mask" |
| String redMaskResIdNameNome do drawable resource à substituir a máscara vermelha padrão. Caso for usar este parâmetro, use uma máscara com a mesma área de corte, é importante para o algoritmo de detecção. Por exemplo, salve a imagem da máscara em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_red_mask.png e parametrize "my_custom_red_mask" |
| String whiteMaskResIdNameNome do drawable resource à substituir a máscara branca padrão. Caso for usar este parâmetro, use uma máscara com a mesma área de corte, é importante para o algoritmo de detecção. Por exemplo, salve a imagem da máscara em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_white_mask.png e parametrize "my_custom_white_mask" |
| MaskType maskTypeDefine o tipo de máscara utilizada nas capturas. Existem dois tipos: MaskType.DEFAULT, com o padrão pontilhado e MaskType.NONE, que remove completamente a máscara. O padrão é MaskType.DEFAULT |
| CaptureSettings constructor |
| --------- |
| int beforePictureMillisDuração em milissegundos entre a primeira detecção do rosto e a efetiva captura da foto |
| int afterPictureMillisDuração em milissegundos entre a captura da foto e o envio para o servidor para o mantimento do rosto e dos sensores válidos |
| SensorSettingsAndroid constructor |
| --------- |
| SensorStabilitySettingsAndroid sensorStabilitySettingsConfigurações do sensor de orientação à ser aplicado em todos os passos do SDK |
| SensorStabilitySettingsAndroid constructor |
| --------- |
| String messageResourceIdNameNome do string resource à ser mostrado quando o celular não estiver estável. A mensagem padrão é "Mantenha o celular parado". Por exemplo, caso deseje mostrar a String "Teste", crie uma String em ROOT_PROJECT/android/app/src/main/res/values/strings.xml com o nome R.string.my_custom_stability_string e valor "Teste" e parametrize "my_custom_stability_string" |
| int stabilityStabledMillisQuantos milissegundos o celular deve se manter no limiar correto para ser considerado estável. O padrão é 2000 ms |
| double stabilityThresholdLimiar inferior entre estável/instável, em variação de m/s² entre as últimas duas coletas do sensor. O padrão é 0.5 m/s² |
iOS
| IosSettings constructor |
| --------- |
| PassiveFaceLivenessCustomizationIos customizationCustomização visual do SDK |
| int beforePictureMillisDuração em milissegundos entre a primeira detecção do rosto e a efetiva captura da foto |
| SensorStabilitySettingsIos sensorStabilityConfigurações do sensor de estabilidade à ser aplicado no SDK |
| PassiveFaceLivenessCustomizationIos constructor |
| --------- |
| String colorHexCor tema do SDK. Por exemplo, caso deseje usar a cor preta, utilize "#000000" |
| String greenMaskImageNameNome da imagem à substituir a máscara verde padrão. Lembre de adicionar a imagem em Assets Catalog Document no seu projeto do XCode |
| String whiteMaskImageNameNome da imagem à substituir a máscara branca padrão. Lembre de adicionar a imagem em Assets Catalog Document no seu projeto do XCode |
| String redMaskImageNameNome da imagem à substituir a máscara vermelha padrão. Lembre de adicionar a imagem em Assets Catalog Document no seu projeto do XCode |
| String closeImageNameNome da imagem à substituir o botão de fechar o SDK. Lembre de adicionar a imagem em Assets Catalog Document no seu projeto do XCode |
| bool showStepLabelFlag que indica se deseja mostrar o label do passo atual |
| bool showStatusLabelFlag que indica se deseja mostrar o label do status atual |
| SensorStabilitySettingsAndroid constructor |
| --------- |
| String messageString à ser mostrada quando o celular não estiver estável |
| double stabilityThresholdLimiar inferior entre estável/instável, em variação de m/s² entre as últimas duas coletas do sensor. O padrão é 0.3 m/s² |
Coletando o resultado
O objeto de retorno do DocumentDetector terá o atributo result que contém uma string SUCCESS, FAILURE ou CLOSED. O retorno terá o padrão PassiveFaceLivenessSuccess, PassiveFaceLivenessFailure e PassiveFaceLivenessClosed, respectivamente, para cada um dos casos.
PassiveFaceLivenessSuccess
| Campo |
| --------- |
| String imagePathEndereço completo da imagem no dispositivo |
| String imageUrlURL da imagem armazenada temporariamente nos servidores da CAF |
| String signedResponseResposta assinada do servidor da CAF que confirmou que a selfie capturada possui um rosto verdadeiro (não é foto de foto ou vídeo). Utilize esse parâmetro caso queira uma camada extra de segurança verificando se a assinatura da resposta não está quebrada, provocada por uma interceptação da requisição. Se estiver quebrada, há um grande indício de interceptação da requisição |
| String trackingIdIdentificador dessa execução em nossos servidores. Se possível, salve este campo e mande-o junto para nossa API. Assim, teremos mais dados de como o usuário se comportou durante a execução | Será nulo se o usuário configurar useAnalytics = false ou as chamadas de analytics não funcionarem |
PassiveFaceLivenessFailure
| Campo |
| --------- |
| String messageMensagem amigável explicando o motivo da falha do SDK |
| String typeTipo de falha que encerrou o SDK |
Os tipos de falha existentes são:
InvalidTokenReason: quando o token informado é inválido. Não deve ocorrer em um ambiente de produção;PermissionReason: quando alguma permissão obrigatória não foi concedida pelo usuário. Só ocorrerá em um ambiente de produção se o seu app não solicitar ao seu usuário ou o mesmo desabilitar manualmente antes de iniciar;NetworkReason: falha de conexão com o servidor. Ocorrerá em produção se o dispositivo do usuário estiver sem internet;ServerReason: falha em alguma requisição com nossos servidores. Ocorrerá em produção somente no caso de uma falha nossa;SecurityReason: quando o dispositivo não é seguro para executar o SDK. Se esta falha ocorrer, avise-nos;StorageReason: quando o dispositivo não possui espaço suficiente para a captura de alguma foto. Pode ocorrer em produção;LibraryReason: quando alguma falha interna impossibilitou a execução do SDK. Pode ocorrer devico à erros de configuração do projeto, não deve ocorrer em produção;
PassiveFaceLivenessClosed
Objeto vazio indicando fechamento da tela de captura pelo usuário.
