Guia Rápido de Uso
1. Requisitos de Compatibilidade
Antes de integrar, confira:
| Requisito | Detalhe |
|---|---|
| Flutter/Dart | Flutter >=3.3.0, Dart SDK ^3.5.3 (conforme o pacote publicado). |
| Projeto host | Projeto Flutter com suporte a plugins nativos (Android e/ou iOS). |
| Android | Gradle 8.0+; minSdkVersion 26 (Android 8.0) ou superior; permissão de câmera; acesso à internet; Activity válida quando startLiveness for chamado. |
| iOS | 13.0+; NSCameraUsageDescription; internet. |
| Câmera e rede | O fluxo de liveness depende de câmera frontal (configurável no tema, apenas para o provedor iProov) e conectividade para os serviços Certiface. |
iOS: Janela e rootViewController: a implementação atual obtém o rootViewController a partir da janela principal da aplicação. Em cenários com múltiplas janelas, deep links ou estados incomuns de ciclo de vida, valide o fluxo em dispositivo real. Erros típicos incluem código NO_CONTROLLER quando o controlador não está disponível.
Android: Activity: se não houver Activity anexada ao plugin (por exemplo, contexto errado), o canal pode retornar NO_ACTIVITY.
2. Permissões
O app host precisa declarar uso de câmera:
- iOS:
NSCameraUsageDescription - Android: permissão de câmera no
AndroidManifest.xml
Siga os guias oficiais de instalação para Maven/CocoaPods e configuração de chaves nativas.
3. Funcionalidades
- Biometria facial (liveness), com verificação e prova de vida executadas pelo SDK nativo do provedor escolhido
- Dois provedores suportados: iProov (
'IPROOV') e FaceTec ('FACETEC') - Verificação e solicitação de permissão de câmera (
checkPermission/askPermission) - Jornada apresentada em tela cheia pelo SDK nativo (Android/iOS) — não é um preview de câmera embutido em um
WidgetFlutter - Customização visual opcional via
ThemeBuilder. - Retorno estruturado (
status,result,message) viaFuture<Map<String, dynamic>>; falhas de canal chegam comoPlatformException - Comunicação com os servidores Certiface para validação, em ambiente
HMLouPRD
4. Instalação
4.1. Via pub.dev
dependencies:
certiface_sdk: ^1.2.04.2. Via GitHub
dependencies:
certiface_sdk:
git:
url: https://github.com/oititec/certiface-sdk-flutter.git
ref: main # ou a branch / tag desejadaDepois execute flutter pub get.
5. Configuração
- Adicione a dependência
certiface_sdknopubspec.yamldo seu app. - Conclua a configuração nativa (repositórios Maven, CocoaPods, permissões e chaves) seguindo o Guia de Instalação Flutter.
- Obtenha a App Key (e demais credenciais) pelo fluxo acordado com a Certiface (painel, API de credenciais ou integração do seu produto).
- Importe o SDK:
import 'package:certiface_sdk/certiface_sdk.dart';
import 'package:certiface_sdk/common/theme_builder.dart'; // apenas se usar tema customizado- Mantenha uma instância de
CertifaceSdk(por exemplo noStatede um widget ou em um serviço injetável):
final _certifaceSdk = CertifaceSdk();Canal de comunicação: o plugin usa o method channel oiti_sdk entre Dart e o código nativo.
6. Uso
Fluxo recomendado:
- Verifique se a câmera já está autorizada com
checkPermission(). - Se necessário, solicite a permissão com
askPermission()(abre o diálogo nativo). - Chame
startLivenessinformando a App Key, oenvironmente oproviderdesejados. - Trate o
Map<String, dynamic>retornado (status/result/message) e capturePlatformExceptionpara falhas do canal.
final sdk = CertifaceSdk();
Future<void> runLiveness(String appKey) async {
if (!await sdk.checkPermission()) {
final granted = await sdk.askPermission();
if (!granted) return;
}
try {
final res = await sdk.startLiveness(
appKey,
environment: 'HML',
provider: 'FACETEC', // ou 'IPROOV'
);
if (res['status'] == 'success') {
final result = res['result'];
// usar result conforme o guia de retornos da Certiface
} else {
final message = res['message'];
// exibir erro ao usuário
}
} on PlatformException catch (e) {
// e.code, e.message
}
}Para customização visual (ThemeBuilder) e detalhes de cada parâmetro, veja o guia-detalhado.md.
7. Ambiente de Testes
Durante o desenvolvimento, utilize o ambiente HML com App Keys fornecidas pela equipe CertiFace.
⚠️ Evite o ambiente de produção (PRD) para testes manuais e massivos: use homologação até o go-live validado.
await sdk.startLiveness(appKey, environment: 'HML', provider: 'FACETEC');