Última atualização

Android (Kotlin)

Pré-requisitos

Para poder usar o hosted widget no seu aplicativo Android, certifique-se de que você:

  • Pode criar tokens de access no seu servidor.
  • Sabe como implementar webviews para sua plataforma. Para mais informações, consulte os artigos de webview do Google.

No seu arquivo AndroidManifest.xml, adicione o seguinte código:

Exemplo de Configuração de Deeplink
<manifest ...>
<application ...>
    <activity ...>
			<intent-filter> <!-- Você precisa adicionar todo este objeto XML. -->
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
				<data
          android:scheme="your-url-here"
          android:host="" /> 
      </intent-filter>
    </activity>
  </application>
</manifest>

Manipular eventos na sua webview

No exemplo de código abaixo, você pode ver um exemplo de como escutar e manipular eventos dentro da sua webview.

Exemplo de Manipulação de Webview
val belvoWebView: WebView = findViewById(R.id. WEBVIEW_ID_ASSIGNED_IN_CONTENT  )
        belvoWebView.loadUrl("https://widget.belvo.io/?access_token={access_token_from_backend}")
        belvoWebView.settings.javaScriptEnabled = true
        belvoWebView.settings.allowContentAccess = true
        belvoWebView.settings.setDomStorageEnabled(true)
        belvoWebView.settings.useWideViewPort = true


        belvoWebView.webViewClient = object : WebViewClient () {
            override fun shouldOverrideUrlLoading(view: WebView?, url: String): Boolean {
                view?.loadUrl(url)
               if (url.startsWith("https")) {
                   return true
               }
               else {
                   belvoWebView.stopLoading()
                   val uri: Uri = Uri.parse(url)
                   val host: String? = uri.host
                   if (host == "success") {
                       val link : String? = uri.getQueryParameter("link")
                       val institution : String? = uri.getQueryParameter("institution")
                       // Faça algo com o link e a instituição.
                   }
                   else if (host == "exit") {
                     // Se o redirecionamento começar com "exit",
                     // Faça algo com os dados.
                   }
                   else {
                     // Se o redirecionamento começar com "error",
                     // Faça algo com os dados.
                   }
                   belvoWebView.goBack()
               }
               return false
            }
        }
        belvoWebView.addJavascriptInterface(BelvoWidget(), "your-url-here") // Usado para escutar eventos adicionais

Por favor, note: Você pode receber um aviso devido à linha belvoWebView.settings.javaScriptEnabled = true (como na imagem abaixo). O Widget da Belvo para Webviews cumpre todos os tipos de mitigações de XSS, por isso recomendamos suprimir este aviso com a anotação sugerida pelo Android Studio.

Ouvindo eventos adicionais

Nosso hosted widget também envia dados adicionais sobre eventos que o usuário encontra ao longo do widget. Por exemplo, quando o usuário vai da tela de seleção de instituição para a tela de login de credenciais, nosso widget enviará um evento.

Os eventos são enviados como payloads de string JSON com o seguinte esquema:

PAGE_LOAD Event
{
    "eventName": "PAGE_LOAD",
    "metadata":{
        "page": "/institutions", // Página para a qual o usuário é direcionado
        "from": "/consent", // Página onde o usuário estava anteriormente
        "institution_name": "", // Nota: Este campo só aparece DEPOIS que eles selecionaram uma instituição
    }
}

Para ouvir esses eventos:

  1. Adicione a seguinte classe à sua aplicação.
class BelvoWidget() {

    @JavascriptInterface
    fun sendMessage(data:String) {
        println( "Event data: $data" )
    }
}
  1. Adicione a seguinte linha de código ao final da sua lógica para manipular deep links no seu webview:
belvoWebView.addJavascriptInterface(BelvoWidget(), "belvoWidget") // Usado para ouvir eventos adicionais
  1. [Opcional] Adicione a seguinte anotação onde necessário para suprimir qualquer aviso:
@SuppressLint("JavascriptInterface")

Pronto! Agora você pode ouvir eventos adicionais no seu webview!