Verificação em aplicativo
Verificação em aplicativo
Seu aplicativo abre a verificação numa WebView, o titular faz tudo sem sair do app, e o app fecha a tela sozinho quando termina. É o mesmo fluxo do navegador, com o mesmo widget e o mesmo webhook: o que muda é a configuração da WebView, porque as duas plataformas nascem com defaults que atrapalham a câmera.
Você tem duas portas, e as duas funcionam aqui. Pode carregar na WebView a sua própria página com o widget montado, ou pode carregar direto o link de verificação hospedado, que é uma página nossa e não exige front nenhum do seu lado. Em qualquer uma delas, a hora de fechar a tela chega pelo evento que o widget dispara, descrito em O Widget.
A permissão de câmera é do app hospedeiro, nunca da página: declare o uso no app e peça a permissão nativa antes de abrir a tela da verificação. Feito isso, três ajustes decidem se a captura acontece dentro da sua tela ou não acontece.
| ajuste | default da plataforma | deixar como está significa |
|---|---|---|
allowsInlineMediaPlayback | false no iPhone, true no iPad | No iPhone, com o default, o vídeo da câmera tenta abrir em tela cheia nativa e a captura não acontece dentro da sua tela. Ligue. |
getUserMedia (WKWebView, iOS 14.3+) | exposto só quando o app hospedeiro pode capturar nativamente | Declare o uso da câmera no app e peça a permissão nativa. Sem isso a API simplesmente não existe dentro da WebView. |
requestMediaCapturePermissionFor (iOS 15+) | prompt padrão do sistema | Implemente se quiser decidir a permissão no seu código, em vez de deixar o prompt padrão aparecer por cima da sua tela. |
Aqui são quatro, e o primeiro é o que mais aparece em chamado de integração: a WebView do Android nasce sem JavaScript.
| ajuste | default da plataforma | deixar como está significa |
|---|---|---|
setJavaScriptEnabled | false | Com o default a verificação não carrega. Ligue. |
setMediaPlaybackRequiresUserGesture | true | Com o default o vídeo da câmera só começa depois de um toque extra do titular, dentro de uma tela que já pediu um. Desligue. |
setDomStorageEnabled | false | Com o default o titular que sai do app e volta recomeça do zero. Ligue e a verificação retoma de onde parou. |
onPermissionRequest (WebChromeClient) | negado, quando não implementado | A permissão de câmera é decisão do seu app, não da nossa página. Sem implementar, a câmera nunca abre. |
O widget avisa a página quando a verificação termina, e essa é a deixa para o app fechar a WebView. Numa WebView React Native o aviso chega sozinho por postMessage; numa WebView nativa, injete uma linha que reenvia o aviso pela ponte que você já usa com a sua tela. O contrato completo do evento, com o payload, os três canais e quando cada campo vem preenchido, está em O Widget.
// Injetado na WebView: reenvia o fim da verificação para o código nativo.
// O nome do evento e o formato do payload estão na página do Widget.
window.addEventListener("unifokal:done", (ev) => {
pontePraNativo(JSON.stringify(ev.detail));
});E o desfecho de verdade continua chegando ao seu servidor. O evento fecha a tela; quem libera, credita ou dá por concluído é o webhook assinado. Um app que decide pelo evento está decidindo por um sinal que vive no navegador.
Esta página cobre a verificação dentro da sua WebView: câmera, captura, fluxo completo e o aviso de fim. Leitura de chip por NFC e atestação de dispositivo pelos serviços da Apple e do Google não fazem parte dela. Se o seu caso pede um desses, fale com a gente antes de desenhar a tela.
Pronto para integrar? A chave de sandbox sai no painel, logo depois do cadastro. Criar conta grátis