entry.url ao chamar criar verificação.
Pré-requisitos
- Android Studio recente, com AGP 9 e Gradle 9 ou superior.
minSdk 24e Java 11.- Um embed URL emitido pelo seu backend, como em emitir a credencial.
- Acesso ao artefato. O pacote
com.legitimuz:sdké privado: peça ao suporte a URL do repositório Maven e as credenciais de leitura, ou o.aarda versão que você vai usar.
Confira o exemplo
Os arquivos desta integração, com o destino de cada um.
Configure o projeto
1
Declare o repositório e a dependência
androidx.webkit, androidx.browser e androidx.appcompat vêm por
transitividade. Pelo .aar, declare as três: sem elas o app compila e quebra em runtime com
NoClassDefFoundError.Guarde as credenciais do repositório fora do controle de versão, em
~/.gradle/gradle.properties ou numa variável de ambiente do seu CI.2
Prepare a Activity que hospeda a verificação
A SDK já declara A Activity hospedeira tem que ser uma
INTERNET, CAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION e
ACCESS_COARSE_LOCATION no próprio manifest. O merge traz as cinco para o seu app e você não
precisa repeti-las.O que o seu app precisa garantir são duas coisas:AndroidManifest.xml
ComponentActivity — uma AppCompatActivity já é. A SDK
pede as permissões pelo ActivityResultRegistry dela; sem isso os diálogos do sistema não
abrem e a câmera nunca liga.Sem configChanges, uma rotação recria a Activity e derruba a verificação em andamento. A SDK
é uma View e não trava a orientação do host por conta própria.3
Valide o embed URL
Legitimuz.parseEmbedUrl exige https:// e um domínio de verificação da Legitimuz — a
WebView só libera câmera e microfone em origem segura.VerificationActivity.java
createSession valida de novo internamente. Ele existe para dar o
retorno ao titular mais cedo.4
Crie a sessão e anexe a view
VerificationActivity.java
requestsDeviceAccessAutomatically. Com true, a SDK pede câmera,
microfone e localização assim que a tela é anexada, antes de a página carregar. Passe false
se o seu app já pede essas permissões numa tela anterior; mesmo assim a SDK pede o que faltar
no momento em que o widget precisar.LegitimuzVerificationView é uma FrameLayout comum, sem toolbar nem navegação própria. Você
decide como apresentá-la.5
Observe os eventos e o desfecho
VerificationActivity.java
onOutcome dispara na hora.6
Destrua o handle
VerificationActivity.java
destroy() encerra o fluxo, apaga os cookies e o storage da verificação e destrói a WebView.
Chame sempre.Confira que funcionou
O fluxo abre na primeira etapa e o seu Logcat registrasession.started. No dashboard, a
verificação sai de not_opened e passa a started.
Eventos
event.getType() devolve a string crua. LegitimuzEventType.fromRawValue(...) converte para o
enum quando você quer um switch.
Não intercepte
terms.open nem redirect.open: a LegitimuzVerificationView já abre essas URLs
em Custom Tabs.
event.getPayload() é um LegitimuzJsonValue, um envelope JSON genérico para as etapas que emitem
dados extras. Acesse com get(...) e os acessores tipados:
Ler o payload
Tratamento de erros
Os erros vêm de três lugares, em momentos diferentes.Validação do embed URL, antes da sessão
Validação do embed URL, antes da sessão
LegitimuzEmbedUrlError, devolvido por parseEmbedUrl e por createSession. O
getMessage() já vem em pt-BR, pronto para exibir.Erros durante a verificação
Erros durante a verificação
LegitimuzPublicError chega em onOutcome com getKind() == FAILED.Exiba sempre
getDisplayMessage(): ele já resolve a prioridade entre getUserMessage(),
getMessage() e o texto genérico.Só erro com isRecoverable() == false encerra a sessão. Erro recuperável aparece em onEvent
como session.error e o fluxo continua. O catálogo de códigos está em
tratamento de erros.Falha ao carregar a página
Falha ao carregar a página
LOAD_FAILED é problema de rede, DNS ou TLS ao abrir o embed URL, não erro da verificação. A
própria view já mostra a tela de “Não foi possível abrir a verificação” com botão de tentar de
novo, então normalmente não trate. getLoadFailedMessage() traz o detalhe em pt-BR.onOutcome pode disparar mais de uma vez por causa desse retry.Casos de borda
A verificação some quando o aparelho gira
A verificação some quando o aparelho gira
Falta o
android:configChanges na sua Activity. Veja o segundo passo.O titular negou a câmera
O titular negou a câmera
Depois de “não perguntar mais”, só as configurações do sistema resolvem. Mande o titular para
lá, explicando antes por que a câmera é necessária:
Abrir as configurações do app
O embed URL expirou
O embed URL expirou
O embed URL vale até o
expires_at da verificação. Expirado, peça um novo ao seu backend e crie
outra sessão. Não reaproveite o antigo.Próximo passo
iOS
O mesmo fluxo em Swift.
Receber a decisão
Onde o desfecho realmente chega.