Documentação Técnica

Flutter

Documentação do Pacote bigdatacorp_apps_webview_sdk

Visão Geral

Este pacote fornece um widget Flutter, BdcWebView, para integrar o fluxo de onboarding da BigDataCorp em seu aplicativo por meio de um WebView. Ele gerencia as permissões necessárias (câmera e localização) e a comunicação com a página web para notificar a finalização do processo.


Instalação

Adicione a seguinte dependência ao seu arquivo pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  bigdatacorp_apps_webview_sdk: ^<versão_mais_recente>

 

Substitua <versão_mais_recente> pela última versão disponível do pacote. Em seguida, execute flutter pub get no seu terminal.


Configuração

Para que o WebView funcione corretamente e tenha acesso à câmera e à localização, são necessárias algumas configurações nas plataformas Android e iOS.

Android

Edite o arquivo android/app/src/main/AndroidManifest.xml e adicione as seguintes permissões dentro da tag <manifest>:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Opcional, mas recomendado para alguns dispositivos -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Dentro da tag <application>, certifique-se de inserir a tag <provider> conforme abaixo:

<provider
    android:name="com.pichillilorenzo.flutter_inappwebview_android.InAppWebViewFileProvider"
    android:authorities="${applicationId}.flutter_inappwebview_android.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>

A configuração da tag <provider> no AndroidManifest.xml é um requisito técnico indispensável, pois permite que o WebView, utilizado pelo SDK, interaja de forma segura com a câmera e o sistema de arquivos do dispositivo Android. Devido às políticas de segurança do Android, que proíbem o compartilhamento direto de caminhos de arquivos, este FileProvider atua como um intermediário seguro, sendo crucial para funcionalidades como o upload de documentos e a captura de imagens para a prova de vida. A ausência ou configuração incorreta desta tag resultará diretamente na falha dessas funcionalidades essenciais do fluxo de onboarding.

iOS

Edite o arquivo ios/Runner/Info.plist e adicione as seguintes chaves. O sistema operacional exibirá as descrições fornecidas ao usuário quando solicitar as permissões. É crucial que você personalize as strings de descrição para refletir o uso que seu aplicativo fará desses recursos.

<key>NSCameraUsageDescription</key>
<string>Precisamos de acesso à sua câmera para realizar a verificação de identidade e prova de vida.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Precisamos de acesso à sua localização para previnir fraudes e garantir 
a segurança do processo.</string>

Como Usar

Importe o pacote e utilize o widget BdcWebView em sua árvore de widgets.

Parâmetros
  1. onboardingId (String, obrigatório): O ID único para a sessão de onboarding que será carregada no WebView.
  2. onFinish (Function?, opcional): Uma função de callback que é chamada quando o fluxo de onboarding dentro do WebView é concluído ou quando ocorre um erro irrecuperável ao carregar a página.
Exemplo de Uso
import 'package:flutter/material.dart';  
import 'package:bigdatacorp_apps_webview_sdk/bigdatacorp_apps_webview_sdk.dart';

class OnboardingScreen extends StatelessWidget {  
  // Substitua pelo ID de onboarding real fornecido pela sua aplicação  
  final String yourOnboardingId = "seu-onboarding-id-aqui";

  const OnboardingScreen({super.key});

  void \_handleOnboardingFinish(BuildContext context) {  
    // Aqui você pode implementar a lógica para o que acontece após o fim do fluxo.  
    // Por exemplo, navegar para a próxima tela ou exibir um diálogo de sucesso.  
    print("Fluxo de Onboarding finalizado!");  
    ScaffoldMessenger.of(context).showSnackBar(  
      const SnackBar(content: Text("Processo finalizado com sucesso!")),  
    );  
    Navigator.of(context).pop();  
  }

  @override  
  Widget build(BuildContext context) {  
    return Scaffold(  
      appBar: AppBar(  
        title: const Text("Onboarding BigDataCorp"),  
      ),  
      body: BdcWebView(  
        yourOnboardingId,  
        () => \_handleOnboardingFinish(context),  
      ),  
    );  
  }  
}