Combate à Fraude Docs

Combate à Fraude Docs

    ›iOS

    Introdução

    • Início
    • Token de acesso
    • Checando as respostas assinadas
    • Checklist de integração

    Android

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • AddressCheck
    • DeviceAnalyser
    • Customização
    • Resultado de um SDK
    • Reduzindo o tamanho dos SDKs
    • Configuração dos sensores
    • Configuração de proxy
    • Configuração de preview
    • Formulário de segurança Google
    • Analytics
    • Notas de atualização

    iOS

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • AddressCheck
    • DeviceAnalyser
    • Customização
    • Configuração de proxy
    • Notas de atualização

    Flutter

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • Notas de atualização

    React Native

    • Primeiros passos

    Ionic

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • Notas de atualização

    Xamarin

    • Primeiros passos

    JavaScript

    • Primeiros passos
    • DocumentDetector
    • PassiveFaceLiveness
    • FaceAuthenticator
    • Erros do SDK
    • Customização
    • Eventos do SDK
    • Segurança
    • Notas de atualização (DocumentDetector)
    • Notas de atualização (PassiveFaceLiveness)
    • Notas de atualização (FaceAuthenticator)

    API

    • Primeiros passos
    • Assinatura de respostas
    • Registro Facial
    • Autenticação Facial
    • Prova de vida passiva
    • Autenticação de dispositivos
    • Comprovante de endereço digital

    Customização

    Essa página apresenta um guia para customização de layout nos SDK's iOS. O guia utiliza como exemplo a DocumentDetector. A abordagem por Storyboard e xibs foi descontinuada, mas, caso queira acessar a documentação, clique aqui.

    Customização de View

    1. Crie uma classe YourClass.swift e extenda de DocumentOverlayView, PassiveOverlayView ou FaceAuthOverlayView.
    2. Sobrescreva o método init() e realize a chamada ao construtor da classe pai:
    class YourClass: DocumentOverlayView  {
    
        override init() {
            super.init()
        }
    }
    
    1. Na classe DocumentOverlayView (ou do SDK correspondente), é possível ter acesso a:

      • frame: CGRect, com as dimensões da tela do dispositivo;
      • viewController: DocumentDetectorViewController?, para chamadas aos métodos do SDK.
    2. Agora, construa seus elementos utilizando a abordagem ViewCode. Para adicionar um elemento na view, utilize o método self.addSubview(_ UIView):

    class YourClass: DocumentOverlayView  {
    
        override init() {
            super.init()
    
            let example = UIView()
            example.backgroundColor = UIColor.white
            example.layer.cornerRadius = 8
            self.addSubview(self.example)
        }
    }
    


    5. Para obter atualizações de UI, como mudanças de status, visibilidade de botões e máscaras, por exemplo, sobrescreva os métodos abaixo:

    class YourClass: DocumentOverlayView {
    
        ...
    
        // MARK: -  Métodos de estado
    
        public override func loading(status: Bool){
            // Indica o estado de "loading".
            // A variável 'status' será 'true' de acordo com a abertura do SDK, captura de imagem, requisições para o backend...
        }
    
        public override func readyToCapture(status: Bool){
            // Indica que o SDK está pronto para realizar a captura, após realizar todas as validações de sensores, enquadramento, face, etc
        }
    
        public override func stepDoneSuccessfully(status: Bool){
            // Indica que o step de captura finalizou com sucesso
        }
    
        public override func validationFailure(status: Bool, id: ValidationFailure?){
            // A variável 'status' indica se há alguma falha nas verificações de sensores, qualidade, enquandramento, distância da face, etc.
            // A maioria das falhas de validação geram o status de "máscara de erro"
            // A variável 'id' indica qual é o tipo de erro que ocorreu. Consulte a tabela abaixo
        }
    
        public override func captureMode(status: CaptureMode){
            // Indica o modo de captura habilitado. Pode variar entre AUTOMATIC e MANUAL
        }
    
        public override func mask(status: Mask, visibility: Bool){
            // A variável 'visibility' indica a visibilidade da máscara
    
            if(visibility){
                switch type {
                case .normal:
                    // Apresente a máscara de estado normal
                    break
                case .success:
                    // Apresente a máscara de sucesso
                    break
                case .error:
                    // Apresente a máscara de erro
                    break
                default:
                    // Apresente a máscara de estado normal
                    break;
                }
            }
        }
    
    
        // MARK: - Métodos de visibilidade
    
        // Disponível apenas para DocumentDetector
        public override func popup(visibility: Bool){
            // Indica a visibilidade do popup de inicialização de step
        }
    
        public override func manualCaptureButton(visibility: Bool){
            // Indica a visibilidade do botão de captura manual
        }
    
        // Disponível apenas para DocumentDetector e PassiveFaceLiveness
        public override func preview(visibility: Bool){
            // Indica a visibilidade da tela de Preview (pós captura)
        }
    
        public override func status(message: String, visibility: Bool) {
            // Utilize para indicar a mensagem que deve ser exibida conforme os estados do SDK
        }
    
        public override func currentStep(name: String){
            // Indica o nome do step atual
        }
    
        // MARK: - Métodos depreciados. Não recomendamos o uso pois em versões futuras serão removidos
    
        public override func show(loading show: Bool) {
            // Utilize para indicar estado de "loading"
        }
        
        public override func show(message text: String) {
            // Apresente as mensagens ao usuário 
        }
    
        open func show(stepName text: String) {
            // Indica o nome do step atual
        }
        
        public override func show(mask type: Mask) {
            switch type {
            case .normal:
                // Apresente a máscara de estado normal
                break
            case .success:
                // Apresente a máscara de sucesso
                break
            case .error:
                // Apresente a máscara de erro
                break
            default:
                // Apresente a máscara de estado normal
            }
        }
    
        public override func show(manualCaptureButton hidden: Bool) {
            // Apresente ou desabilite o botão de captura manual
        }
    
        public override func setCurrentAction(text: String, checked: Bool){
            // Apresente o step atual com o atributo `text`
        }
    
        public override func setLastAction(text: String){
            // O atributo `text` retorna o último step realizado. Pode ser utilizado para apresentar as etapas de captura já realizadas.
        }
    }
    


    6. Para implementação do botão de fechar, o método cancelButtonClick deve ser chamado. Esse método aciona o delegate documentDetectorControllerDidCancel e cancela a captura:

        @objc func closeButtonClick(sender: UIButton!) {
            self.viewController.cancelButtonClick()
        }
    


    7. Para o botão de captura manual, o método clickButtonManualCapture deve ser chamado:

        @objc func manualButtonClick(sender: UIButton!) {
            self.viewController?.clickButtonManualCapture()
        }
    


    8. Por fim, em DocumentDetector.Builder utilize o método, .setOverlay(overlay: DocumentOverlayView).

    ValidationFailure

    Cada SDK contém uma série de erros de validação que podem ocorrer enquanto são executados. Esses estados na maioria geram o estado de "máscara de erro" e impedem que a captura seja realizada:

    ErroDescriçãoSDK
    SENSOR_LUMINOSITY_FAILURESensor de luminosidade. O ambiente está muito escuroDocumentDetector, PassiveFaceLiveness
    SENSOR_ORIENTATION_FAILURESensor de orientação. O dispositivo não está na posição corretaDocumentDetector, PassiveFaceLiveness
    SENSOR_STABILITY_FAILURESensor de estabilidade. O dispositivo está em movimentoDocumentDetector, PassiveFaceLiveness, FaceAuthenticator
    FRAMING_FAILUREEnquadramento de documento ou faceDocumentDetector, PassiveFaceLiveness, FaceAuthenticator
    FACE_NOT_FOUNDNenhuma face foi encontradaPassiveFaceLiveness, FaceAuthenticator
    FACE_TOO_FARFace muito distante.PassiveFaceLiveness, FaceAuthenticator
    MULTIPLE_FACES_FAILUREMúltiplas faces detectadas.PassiveFaceLiveness, FaceAuthenticator
    QUALITY_FAILUREQualidade da captura do documento está muito baixa.DocumentDetector
    LIVENESS_FAILUREErro na prova de vida. É uma provável tentativa de fraudePassiveFaceLiveness, FaceAuthenticator

    Exemplo

    Em breve.

    ← DeviceAnalyserConfiguração de proxy →
    • Customização de View
      • ValidationFailure
    • Exemplo
    Combate à Fraude Docs
    2021 © Combate à Fraude - Todos os direitos reservados.
    COMBATEAFRAUDE TECNOLOGIA DA INFORMACAO LTDA CNPJ: 34.102.645/0001-57
    R. Tiradentes, 1077 - 5º andar - Centro, Venâncio Aires - RS, CEP 95800-000