Aller au contenu principal

WKWebView

Pour le scénario d'utilisation iOS, l'utilisation de WKWebView est l'une des approches recommandées.

Après avoir créé la transaction et obtenu le lien de transaction, l'implémentation suivante est recommandée :

  • Dans votre flux habituel (qui inclut Vérification sans carte présente), vous ouvrirez le WKWebView avec le lien généré via l'API ;
  • Vous pouvez personnaliser cette ouverture selon les besoins de votre application ;
  • Vous surveillerez si l'URL a changé (vers le redirectUrl), puis vous fermerez le WKWebView.

Ouvrir un WKWebView est assez simple :

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
}

Pour contrôler quand fermer le WKWebView, vous pouvez procéder comme suit :

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()
}
}
remarque

Certaines permissions sont nécessaires pour un fonctionnement correct, telles que :

  • Caméra
  • Géolocalisation

Pour en savoir plus, nous recommandons de consulter la documentation officielle de WKWebView.