Captura de documentos
Captura de documentos
Este guia foi elaborado para ajudá-lo a implementar o SDK iOS de forma rápida e fácil. São disponibilizados conceitos básicos, exemplos de implementação dos SDKs e também de como interagir com as APIs REST dos motores.
Através deste guia, é possivel:
- Implementar a abertura da câmera e a captura de imagens;
- Manipular os dados de retorno;
- Utilizar o retorno do SDK com as APIs do motor.
Antes de começar, certifique-se que seguiu o passo-a-passo para instalação e importação do SDK neste guia.
RECURSOS DISPONÍVEIS
O SDK iOS oferece um componente para captura de documento contendo um frame de captura que auxilia o usuário a posicionar o documento de forma correta para a foto. Após posicionar corretamente, o usuário deve clicar em um botão para capturar a foto do documento.
A captura dos seguintes tipos de documentos está disponível:
- Sem silhueta: Captura documento genérico;
- RG: Captura do RG (separado em frente e verso);
- CNH: Captura da CNH aberta;
- CNH frente: Captura da frente da CNH;
- CNH verso: Captura do verso da CNH;
- CPF: Captura do documento de CPF;
IMPLEMENTAÇÃO
Seguindo este passo-a-passo, você tem todo o potencial do SDK embarcado em sua aplicação iOS.
INICIALIZAR O SDK
Para iniciar com SDK iOS do Unico Check, importe o SDK e implemente a interface
AcessoBioManagerDelegate
dentro da ViewController que deseja utilizar.A implementação dessa classe é bem simples e pode ser feita com poucas linhas de código. Tudo que precisa fazer é intanciar o builder informando o contexto em questão e sobrescrever os métodos de callback com as lógicas de negócio de sua aplicação:
- Objective-C
- Swift
.m:
#import "ViewController.h"
#import <AcessoBio/AcessoBio.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
unicoCheck = [[AcessoBioManager alloc]initWithViewController:self];
}
- (void)onErrorAcessoBioManager:(ErrorBio *)error {
// Your code
}
- (void)onSystemChangedTypeCameraTimeoutFaceInference {
// Your code
}
- (void)onSystemClosedCameraTimeoutSession {
// Your code
}
- (void)onUserClosedCameraManually {
// Your code
}
@endimport UIKit
import AcessoBio
class ViewController: UIViewController, AcessoBioManagerDelegate {
var unicoCheck: AcessoBioManager!
override func viewDidLoad() {
super.viewDidLoad()
unicoCheck = AcessoBioManager(viewController: self)
}
func onErrorAcessoBioManager(_ error: ErrorBio!) {
// Your code
}
func onUserClosedCameraManually() {
// Your code
}
func onSystemClosedCameraTimeoutSession() {
// Your code
}
func onSystemChangedTypeCameraTimeoutFaceInference() {
// Your code
}
}IMPLEMENTAR AS FUNÇÕES DE CALLBACK
Note que, conforme o exemplo anterior, o trabalho de implementação da interface
AcessoBioManagerDelegate
é, em grande parte, a configuração dos métodos de callback. Cada método é chamado em uma situação específica de retorno do SDK.Basta sobrescrever os métodos exemplificados no passo anterior com as lógicas de negócio de sua aplicação.
Método
onErrorAcessoBioManager(_ error: ErrorBio!)
Este método é invocado quando qualquer erro de implementação ocorrer ao utilizar algum dos métodos, como por exemplo, ao informar um tipo de documento incorreto para a funcionalidade de captura de documentos.
Ao ser invocado, o método recebe um parâmetro do tipo
ErrorBio
que contem detalhes do erro. Saiba mais sobre o tipoErrorBio
no artigo de Referências deste SDK.Método
onUserClosedCameraManually()
Este método é invocado quando o usuário fechar a câmera de forma manual, como por exemplo, ao clicar no botão "Voltar".
Método
onSystemClosedCameraTimeoutSession()
Este método é invocado assim que o tempo máximo de sessão for atingido (sem capturar nenhuma imagem).
AtençãoTodos os métodos acima devem ser criados da forma indicada em seu projeto (mesmo que sem nenhuma lógica). Caso contrário, o projeto não compila com sucesso.
Implementar delegates para eventos da câmera
O método de abertura da câmera (que é chamado no próximo passo) precisa saber o que fazer ao conseguir capturar uma imagem com sucesso ou ao ter algum erro no processo. É informado "o que fazer" ao método de abertura da câmera através da configuração de delegates que são chamados em situações de sucesso ou erro.
Através da configuração dos delegates, você pode especificar o que acontece em seu App em situações de erro (método
onErrorDocument
) ou sucesso (métodoonSuccessDocument
) na captura de imagens.Para a configuração dos delegates, você deve implementar as interfaces
DocumentCameraDelegate
eAcessoBioDocumentDelegate
:- Objective-C
- Swift
.h:
#import <UIKit/UIKit.h>
#import <AcessoBio/AcessoBio.h>
#import "SelfieCameraDelegate.h"
@interface ViewController: UIViewController <AcessoBioManagerDelegate, DocumentCameraDelegate,
AcessoBioDocumentDelegate> {
AcessoBioManager *unicoCheck;
// Your code from previous and next steps here
}import UIKit
import AcessoBio
class ViewController: UIViewController, AcessoBioManagerDelegate, DocumentCameraDelegate,
AcessoBioDocumentDelegate {
// Your code from previous and next steps here
}Método
onSuccessDocument
Ao efetuar uma captura de imagem com sucesso, este método é invocado e retorna um objeto do tipo
ResultCamera
que é utilizado posteriormente na chamada das APIs REST.- Objective-C
- Swift
- (void)onSuccessDocument:(DocumentResult *)result {
NSLog(@"%@", result.base64);
}func onSuccessDocument(_ result: DocumentResult!) {
// Your code
}Em caso de sucesso, o objeto
ResultCamera
retorna 2 atributos:base64
eencrypted
.- O atributo
base64
pode ser utilizado caso você queira exibir um preview da imagem em seu app; - O atributo
encrypted
deve ser enviado na chamada das APIs REST do unico check;
Conversão do base64 para BitmapCaso queira converter o base64 para bitmap, a maneira padrão não funciona para o iOS. É necessário realizar o split a partir da vírgula(
,
) para que funcione. Caso queira saber mais, leia o seguinte artigo:How to convert a Base64 string into a Bitmap image to show it in a ImageView?
AlertaO atributo Encrypted é destinado estritamente ao envio da imagem através das APIs da Unico. Não se deve abrir e serializar esse atributo, pois suas características podem ser alteradas sem aviso prévio. Seu uso deve ser exclusivo nas interações com as APIs para garantir a integridade e segurança dos dados. A Unico não se responsabiliza por quaisquer danos decorrentes dessa prática, uma vez que as modificações podem ocorrer de maneira imprevista.
Método
onErrorDocument
Ao ocorrer algum erro na captura de imagem, este método é invocado e retorna um objeto do tipo
ErrorBio
.- Objective-C
- Swift
- (void)onErrorDocument:(ErrorBio *)errorBio {
// Your code
}func onErrorDocument(_ errorBio: ErrorBio!) {
// Your code
}Saiba maisSaiba mais sobre o tipo
ErrorBio
na página de Referências deste SDK.PERSONALIZAR O PROCESSO DE CAPTURA
Esta é uma etapa opcional, porém muito recomendada para que o processo de captura tenha a identidade visual da sua empresa.
É possível customizar o frame de captura por meio do SDK. Para customizar o frame, basta utilizar o método correspondente a propriedade a ser customizada, e posteriormente, aplicar o novo estilo através do método
setTheme()
.Entenda um pouco mais sobre o método
setTheme()
, exemplos de utilização e o que pode ser customizado na página de Referências deste SDK.PREPARAR E ABRIR A CÂMERA
Para abrir da câmera, é necessário prepará-la utilizando o método
prepareDocumentCamera
. Este método recebe como parâmetro a implementação da classeDocumentCameraDelegate
e o JSON com as credenciais, gerado nesse passo.- Objective-C
- Swift
.h:
#import <UIKit/UIKit.h>
#import <AcessoBio/AcessoBio.h>
#import "SelfieCameraDelegate.h"
@interface ViewController: UIViewController < AcessoBioManagerDelegate,
DocumentCameraDelegate, AcessoBioDocumentDelegate> {
AcessoBioManager *unicoCheck;
}
.m:
- (IBAction)openCamera:(UIButton *)sender {
[[unicoCheck build] prepareDocumentCamera:self config:[YourUnicoConfigClass new]];
}import UIKit
import AcessoBio
class ViewController: UIViewController, AcessoBioManagerDelegate,
DocumentCameraDelegate, AcessoBioDocumentDelegate {
@IBAction func openCamera(_ sender: Any) {
unicoCheck.build().prepareDocumentCamera(self, config: YourUnicoConfigClass())
}
}Quando a câmera estiver preparada, o evento
onCameraReadyDocument
é disparado, que recebe como parâmetro um objeto do tipoAcessoBioCameraOpenerDelegate
.Você deve sobrescrever este método, efetuando a abertura da câmera com o objeto recebido através do método
openDocument()
, informando os seguintes parâmetros:Tipo de documento a ser capturado, sendo eles:
DocumentEnums.none
: Frame para captura de documento genérico, sem nenhuma silhueta;DocumentEnums.RG
: Frame para captura do RG, primeiro a frente, depois o verso;DocumentEnums.rgFrente
: Frame para captura da parte da frente do RG;DocumentEnums.rgVerso
: Frame para captura da parte traseira do RG;DocumentEnums.CNH
: Frame para captura de CNH;DocumentEnums.cnhFrente
: Frame para captura da parte da frente da CNH;DocumentEnums.cnhVerso
: Frame para captura da parte traseira da CNH;DocumentEnums.CPF
: Frame para captura CPF;
Os delegates implementados acima (aqui descritos como Self);
- Objective-C
- Swift
- (void)onCameraReadyDocument:(id)cameraOpener {
[cameraOpener openDocument:DocumentCNH delegate:self];
}
- (void)onCameraFailedDocument:(ErrorPrepare *)message {
// Your code
}func onCameraReadyDocument(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {
cameraOpener.openDocument(DocumentEnums.CNH, delegate: self)
}
func onCameraFailedDocument(_ message: ErrorPrepare!) {
// Your code
}Saiba maisO tipo
ErrorPrepare
é uma extensão deErrorBio
contendo assim todas as suas propriedades. Saiba mais sobre o tipoErrorBio
na página de Referências deste SDK.Caso ocorra algum erro ao preparar a câmera, o evento
onCameraFailedDocument
é disparado. Você deve implementar este método aplicando as regras de negócio de seu App.Em caso de sucesso, o evento
onSuccessDocument
é disparado, conforme explicado neste passo.CHAMAR AS APIS
A captura das imagens é apenas a primeira parte da jornada. Após capturar a imagem, é necessário enviar o Encrypted gerado para as APIs, selecionando um dos fluxos disponíveis detalhados em Fluxos.
AtençãoPor motivos de segurança, o intervalo entre a geração do Encrypted e o envio via um dos fluxos disponíveis deve ser de até no máximo 10 minutos. Envios feitos além deste período serão rejeitados automaticamente pela API.
Dúvidas?
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da Central de Ajuda.