Última atualização

iOS (swift)

Pré-requisitos

Para poder usar o hosted widget no seu aplicativo iOS, 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 sobre webview da Apple.

No seu arquivo Info.plist, adicione o seguinte código:

Exemplo de Configuração de Deeplink
<key>CFBundleURLTypes</key>
<array>
   <dict>
      <key>CFBundleURLName</key>
      <string>[YOUR IDENTIFIER]</string> <!-- Nome do seu aplicativo -->
      <key>CFBundleURLSchemes</key>
      <array>
         <string>your-url-here</string> <!-- Sua URL de deeplink -->
      </array>
   </dict>
</array>

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
public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {
        if(navigationAction.navigationType == .other) {
            if navigationAction.request.url != nil {
                if navigationAction.request.url.host == "success" {
                    var url = navigationAction.request.url
                    var link = self.getParameterFrom(url: url, param: "link")
                    var institution = self.getParameterFrom(url: url, param: "institution")
                  // Faça algo com o link e a instituição.
                }
                else if navigationAction.request.url.host == "error" {
                    // Se o redirecionamento começar com "error",
                    // Faça algo com o erro.
                } 
                else {
                  // Se o redirecionamento começar com "exit",
                  // Faça algo com a informação de saída.
                }
            }
            decisionHandler(.cancel)
            return
        }
        decisionHandler(.allow)
    }
self.webView.configuration.userContentController.add(self, name: "belvoWidget") // Usado para escutar eventos adicionais

Ouvindo eventos adicionais

Nosso widget para webviews 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 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 o seguinte protocolo ao seu ViewController.
WKScriptMessageHandler
  1. Adicione o seguinte método à sua aplicação:
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        
    let body = "EVENT DATA: " + (message.body as! String)
    print( body as Any )
        
}
  1. Adicione a seguinte linha de código ao final da sua lógica para manipular deep links no seu webview:
belvoWebview.configuration.userContentController.add(self, name: "belvoWidget") // Usado para ouvir eventos adicionais

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