---
title: WKWebView
description: WKWebViewを使用してiOSでカード非提示認証キャプチャ体験を実装する方法:ビューを開く、閉じるタイミングの制御、必要な権限。
canonical: https://developer.unico.io/ja/dual-api/developers/regional-solutions/card-not-present-verification/integration/controlling-the-experience/mobile/ios/wkwebview
locale: ja
generated_by: markdown-export
---

iOSの利用シナリオでは、WKWebViewの使用が推奨されるアプローチの1つです。

取引を作成し、取引リンクを取得した後は、以下の実装をお勧めします。

- 共通のフロー(カード非提示認証を含む)の中で、APIを通じて生成されたリンクでWKWebViewを開きます。
- アプリケーションに応じて、この開き方をカスタマイズできます。
- URLが変更されたかどうか(`redirectUrl`への変更)を監視し、変更があればWKWebViewを閉じます。

WKWebViewを開くのは非常に簡単です。

```swift
import UIKit
import WebKit
import SafariServices

var webView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()
    // ビューの読み込み後に必要な追加設定を行う
    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
}
```

WKWebViewを閉じるタイミングを制御するには、以下のように実装します。

```swift
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()
    }
}
```

:::note
正しく機能するためには、以下の権限が必要です。
- カメラ
- 位置情報
:::

詳細については、公式の[WKWebViewドキュメント](https://developer.apple.com/documentation/webkit/wkwebview)を参照することをお勧めします。