Jornadas do Usuário
As Jornadas do Usuário são sessões de captura em múltiplas etapas orquestradas pelo SDK em conjunto com o fluxo configurado. Por exemplo, o fluxo idchecktrustdocssign executa selfie + documento + assinatura em uma única sessão.
As jornadas disponíveis dependem do fluxo configurado para a sua integração. Consulte Casos de Uso para o mapeamento completo de caso de uso → fluxo → capacidade.
O plugin delega para os SDKs nativos subjacentes:
- O plugin abre a câmera (Android ou iOS) com a sobreposição SmartFrame.
- O SDK nativo orquestra a sequência de capturas necessárias para o fluxo (selfie, documento, assinatura).
- O SDK encaminha internamente os resultados para a Unico — o cliente nunca recebe ou gerencia dados de imagem diretamente.
- Retorna um objeto
SuccessResultcom umprocessIdvia platform channel.
A orquestração é tratada inteiramente pelo SDK — você não precisa implementar a sequência de etapas no seu código Dart.
O SDK tem enquadramento inteligente e captura automática habilitados por padrão. Configure o modo de câmera no seu builder da seguinte forma:
UnicoCheckCameraOpener _opener = new UnicoCheck(this)
.setAutoCapture(autoCapture: true)
.setSmartFrame(smartFrame: true)
.build();
Os valores false/true para os métodos acima não alteram a experiência de captura; eles são usados apenas para a lógica interna do SDK.
Passo 1 — Implementar UnicoListener
UnicoListener trata os callbacks do ciclo de vida do SDK. Implemente os quatro métodos obrigatórios:
| Método | Quando é chamado |
|---|---|
onErrorUnico(error) | Ocorreu um erro durante a operação do SDK |
onUserClosedCameraManually() | O usuário fechou a câmera manualmente |
onSystemClosedCameraTimeoutSession() | O limite de 40 segundos da sessão foi atingido |
onSystemChangedTypeCameraTimeoutFaceInference() | Nenhum rosto detectado por 13 segundos — muda para captura manual |
class _MyHomePageState extends State<MyHomePage> implements UnicoListener {
late UnicoCheckBuilder _unicoCheck;
@override
void onErrorUnico(UnicoError error) {}
@override
void onUserClosedCameraManually() {}
@override
void onSystemClosedCameraTimeoutSession() {}
@override
void onSystemChangedTypeCameraTimeoutFaceInference() {}
}
Todos os quatro métodos de listener acima devem ser criados no seu projeto (mesmo sem nenhuma lógica). Caso contrário, o projeto não compilará com sucesso.
Passo 2 — Implemente os listeners da jornada no UnicoSelfie
Adicione os callbacks da jornada à sua classe de estado:
| Método | Descrição |
|---|---|
onSuccess(SuccessResult result) | Captura realizada com sucesso — retorna SuccessResult com processId (a Unico processa a imagem internamente) |
onErrorSelfie(UnicoError error) | Captura falhou — retorna um UnicoError com código e descrição |
Ao contrário do fluxo Liveness, o callback da Jornada do Usuário não retorna base64 ou encrypted. A Unico trata o processamento da imagem internamente e retorna apenas um processId.
@override
void onSuccess(SuccessResult result) {
debugPrint('processId: ${result.processId}');
}
@override
void onErrorSelfie(UnicoError error) { }
Passo 3 — Chame openCameraSelfie
O método openCameraSelfie abre a câmera. Para Jornadas do Usuário, passe o webAppToken fornecido pela Unico em vez de um arquivo JSON de credenciais:
_opener.openCameraSelfie(
listener: this,
webAppToken: token,
);
O método openCameraSelfie fornece uma sobrecarga que aceita metadados via UnicoCheckPrepareInfo para auxiliar na identificação da sessão do usuário e do fluxo:
externalUserId(String, obrigatório) — Identificador do usuário no seu sistema. Automaticamente submetido a hash SHA-256 antes da transmissão.useCase(String, opcional) — Identificador do contexto ou fluxo em execução. Transmitido em texto plano.
_opener.openCameraSelfie(
listener: this,
webAppToken: token,
prepareInfo: UnicoCheckPrepareInfo(
externalUserId: 'external_user_id',
useCase: 'use_case', // opcional
),
);
Para o tratamento completo do resultado, consulte Recebendo o resultado.