# WKWebView

Para o cenário de uso em iOS, o uso do **WKWebView** é uma das maneiras recomendadas.

Após criar a transação e obter o link da transação, a seguinte implementação é recomendada:

* Em seu fluxo comum (que está inserido o IDPay), você irá abrir a **WKWebView** com o link gerado via API;
* Você poderá customizar essa abertura da maneira que for o ideal para seu aplicativo;
* Irá monitorar se houve alteração de URL (para a **redirectUrl**) e então feche a **WKWebView**;

Para abrir uma **WKWebView** é bem simples:

{% code overflow="wrap" %}

```javascript
import UIKit
import WebKit
import SafariServices

var webView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    self.view.backgroundColor = .white
}

@IBAction func open(_ sender: Any) {
    createWKWebViewFull()
}

func createWKWebViewFull() {
    webView = WKWebView(frame: self.view.bounds, configuration: getWKWebViewConfiguration())
    webView.navigationDelegate = self
    view.addSubview(webView)
    self.loadUrl()
}

func loadUrl() {
    if let url = URL(string:"<URL_TO_LOAD>") {
        webView.load(URLRequest(url: url))
        webView.allowsBackForwardNavigationGestures = true
    }
}

private func getWKWebViewConfiguration() -> WKWebViewConfiguration {
    let config = WKWebViewConfiguration()
    config.allowsInlineMediaPlayback = true
    config.mediaTypesRequiringUserActionForPlayback = []

    return config
}
```

{% endcode %}

Para controlar quando é necessário fechar o **WKWebView** pode ser feito da seguinte maneira:

```javascript
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
    if let currentURL = webView.url {
        print("URL changed to: \(currentURL.absoluteString)")
        if currentURL.absoluteString == "<URL_TO_OBSERVER>" {
            closeWebView()
        }
    }
}

@objc func closeWebView() {
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
        self.webView.removeFromSuperview()
    }
}
```

Exemplo de como deverá ficar no app:

<figure><img src="https://3928390238-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmbfp7FKwpg3cwSHRBJ6w%2Fuploads%2FzxJ3o2auFyLhTifakOMg%2Fwebweb.gif?alt=media&#x26;token=650e4352-105f-49ee-b474-ff5256d9cfb1" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
É necessário algumas permissões para funcionar corretamente, tais como:

* Câmera;
* Geolocalização.
  {% endhint %}

Para saber mais sobre, recomendamos uma leitura nos seguintes artigos e documentações:

* Para acessar a documentação oficial, clique [<mark style="color:blue;">aqui</mark>](https://developer.apple.com/documentation/webkit/wkwebview).
