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.
Configure deeplinks no seu aplicativo iOS
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:
- Adicione o seguinte protocolo ao seu ViewController.
WKScriptMessageHandler
- 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 )
}
- 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!