iOS (swift)
Prerrequisitos
Para poder usar el hosted widget en tu aplicación iOS, asegúrate de que:
- Puedes crear tokens de
access
en tu servidor. - Sabes cómo implementar webviews para tu plataforma. Para más información, consulta los artículos sobre webview de Apple.
Configura deeplinks en tu aplicación iOS
En tu archivo Info.plist
, agrega el siguiente código:
Ejemplo de Configuración de Deeplink
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>[YOUR IDENTIFIER]</string> <!-- El nombre de tu app -->
<key>CFBundleURLSchemes</key>
<array>
<string>your-url-here</string> <!-- Tu URL de deeplink -->
</array>
</dict>
</array>
Manejar eventos en tu webview
En el siguiente ejemplo de código puedes ver un ejemplo de cómo escuchar y manejar eventos dentro de tu webview.
Webview Handling Example
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")
// Haz algo con el link y la institución.
}
else if navigationAction.request.url.host == "error" {
// Si el redireccionamiento comienza con "error",
// Haz algo con el error.
}
else {
// Si el redireccionamiento comienza con "exit",
// Haz algo con la información de salida.
}
}
decisionHandler(.cancel)
return
}
decisionHandler(.allow)
}
self.webView.configuration.userContentController.add(self, name: "belvoWidget") // Usado para escuchar eventos adicionales
Escuchando eventos adicionales
Nuestro widget para webviews también envía datos adicionales sobre los eventos que el usuario encuentra a lo largo del widget. Por ejemplo, cuando el usuario pasa de la pantalla de selección de institución a la pantalla de inicio de sesión de credenciales, nuestro widget enviará un evento.
Los eventos se envían como cargas JSON con el siguiente esquema:
PAGE_LOAD Event
{
"eventName": "PAGE_LOAD",
"metadata":{
"page": "/institutions", // Página a la que se dirige el usuario
"from": "/consent", // Página donde estaba el usuario previamente
"institution_name": "", // Nota: Este campo solo aparece DESPUÉS de que han seleccionado una institución
}
}
Para escuchar estos eventos:
- Agrega el siguiente protocolo a tu ViewController.
WKScriptMessageHandler
- Agrega el siguiente método a tu aplicación:
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
let body = "EVENT DATA: " + (message.body as! String)
print( body as Any )
}
- Agrega la siguiente línea de código al final de tu lógica para manejar enlaces profundos en tu webview:
belvoWebview.configuration.userContentController.add(self, name: "belvoWidget") // Usado para escuchar eventos adicionales
¡Hecho! ¡Ahora puedes escuchar eventos adicionales en tu webview!