Documentação do Pacote bigdatacorp_apps_webview_sdk
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
- onboardingId (String, obrigatório): O ID único para a sessão de onboarding que será carregada no WebView.
- 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),
),
);
}
}