Guia Rápido de Uso

1. Requisitos de Compatibilidade

Antes de integrar, confira:

RequisitoDetalhe
Flutter/DartFlutter >=3.3.0, Dart SDK ^3.5.3 (conforme o pacote publicado).
Projeto hostProjeto Flutter com suporte a plugins nativos (Android e/ou iOS).
AndroidGradle 8.0+; minSdkVersion 26 (Android 8.0) ou superior; permissão de câmera; acesso à internet; Activity válida quando startLiveness for chamado.
iOS13.0+; NSCameraUsageDescription; internet.
Câmera e redeO 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 Widget Flutter
  • Customização visual opcional via ThemeBuilder.
  • Retorno estruturado (status, result, message) via Future<Map<String, dynamic>>; falhas de canal chegam como PlatformException
  • Comunicação com os servidores Certiface para validação, em ambiente HML ou PRD

4. Instalação

4.1. Via pub.dev

dependencies:
  certiface_sdk: ^1.2.0

4.2. Via GitHub

dependencies:
  certiface_sdk:
    git:
      url: https://github.com/oititec/certiface-sdk-flutter.git
      ref: main # ou a branch / tag desejada

Depois execute flutter pub get.


5. Configuração

  1. Adicione a dependência certiface_sdk no pubspec.yaml do seu app.
  2. Conclua a configuração nativa (repositórios Maven, CocoaPods, permissões e chaves) seguindo o Guia de Instalação Flutter.
  3. Obtenha a App Key (e demais credenciais) pelo fluxo acordado com a Certiface (painel, API de credenciais ou integração do seu produto).
  4. Importe o SDK:
import 'package:certiface_sdk/certiface_sdk.dart';
import 'package:certiface_sdk/common/theme_builder.dart'; // apenas se usar tema customizado
  1. Mantenha uma instância de CertifaceSdk (por exemplo no State de 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:

  1. Verifique se a câmera já está autorizada com checkPermission().
  2. Se necessário, solicite a permissão com askPermission() (abre o diálogo nativo).
  3. Chame startLiveness informando a App Key, o environment e o provider desejados.
  4. Trate o Map<String, dynamic> retornado (status / result / message) e capture PlatformException para 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');