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:
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
}
Para controlar quando é necessário fechar o WKWebView pode ser feito da seguinte maneira:
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:
É necessário algumas permissões para funcionar corretamente, tais como:
Para saber mais sobre, recomendamos uma leitura nos seguintes artigos e documentações:
Para acessar a documentação oficial, clique aqui.
Dúvidas?
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da Central de Ajuda.