IncorporaçãoWebView móvel

WebView móvel

Exiba uma verificação da Certivant em um aplicativo React Native ou Flutter — configurações do WebView, permissões de câmera e os mesmos eventos do SDK web, com código de exemplo.

Um aplicativo nativo exibe as mesmas páginas hospedadas do SDK web em um WebView. Um WebView nativo não é um site, então ele não precisa de uma entrada em Incorporação — essa configuração controla apenas quais sites podem enquadrar as suas páginas.

  1. Seu servidor cria a verificação com a API REST e devolve o token hospedado ao aplicativo. Nunca inclua uma chave de API em um aplicativo.

  2. O aplicativo abre https://<certivant-host>/verify/<token>?embed=1 em um WebView com câmera e microfone permitidos.

  3. Com ?embed=1, a página envia o envelope versionado ao aplicativo hospedeiro:

    { "source": "certivant", "version": 1, "type": "step", "payload": { "step": "upload" } }
    
PlataformaOnde a mensagem chega
React Native (react-native-webview)onMessage — event.nativeEvent.data é o texto JSON
Flutter (webview_flutter)o canal JavaScript CertivantBridge — onMessageReceived
iOS WKWebViewWKScriptMessageHandler registrado como certivant
Android WebViewadicione uma interface JavaScript chamada CertivantBridge com postMessage(String)

Os tipos de evento e os payloads são os mesmos dos eventos do SDK web. Sempre verifique se source === "certivant" e version === 1, e aja somente sobre mensagens do WebView que você criou.

React Native

<WebView
  source={{ uri: `https://app.certivant.com/verify/${token}?embed=1` }}
  originWhitelist={["https://app.certivant.com"]}
  javaScriptEnabled
  domStorageEnabled
  allowsInlineMediaPlayback
  mediaPlaybackRequiresUserAction={false}
  mediaCapturePermissionGrantType="grant"
  geolocationEnabled
  onMessage={(e) => handle(JSON.parse(e.nativeEvent.data))}
/>

Declare CAMERA e RECORD_AUDIO no manifesto do Android e NSCameraUsageDescription / NSMicrophoneUsageDescription no Info.plist, e solicite as permissões em tempo de execução antes de exibir a tela.

Flutter

final controller = WebViewController()
  ..setJavaScriptMode(JavaScriptMode.unrestricted)
  ..addJavaScriptChannel('CertivantBridge',
      onMessageReceived: (m) => handle(jsonDecode(m.message)))
  ..setOnPlatformPermissionRequest((request) => request.grant())
  ..loadRequest(Uri.parse('https://app.certivant.com/verify/$token?embed=1'));

Use o permission_handler para os avisos de câmera, microfone e localização.

Código de exemplo

Wrappers prontos para adaptar estão no repositório, em samples/certivant-embed/ (react-native/ e flutter/), ao lado dos exemplos móveis do Live ID para Android, iOS e .NET MAUI.

Em uma verificação hospedada, o status final complete é submitted — a decisão vem em seguida. Use os webhooks no seu servidor para saber o resultado.