[Swift] WKWebViewでアクセスできるサイトを制限する方法

iOS

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)
	}
}
タイトルとURLをコピーしました