WKWebViewを使用する際、特定のドメインのサイト以外へのアクセスを制限する方法です。
デリゲートを指定
webView.navigationDelegate = self
デリゲートメソッドを実装
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let allowHost = "kcapps.net" //許可するホスト
if let host = navigationAction.request.url?.host {
if host.contains(allowHost) {
decisionHandler(.allow)
return
}
}
decisionHandler(.cancel)
}
コード全文
import UIKit
import WebKit
class ViewController: UIViewController {
private var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView = WKWebView()
webView.navigationDelegate = self
self.view = webView
let request = URLRequest(url: URL(string: "https://www.kcapps.net/")!)
webView.load(request)
}
}
extension ViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let allowHost = "kcapps.net" //許可するホスト
if let host = navigationAction.request.url?.host {
if host.contains(allowHost) {
decisionHandler(.allow)
return
}
}
decisionHandler(.cancel)
}
}