概要
WKWebView
を使用する際に、新しいウィンドウを開く必要があるリンクをクリックしたときに、そのリンクを外部ブラウザで開く方法を紹介します。このテクニックを使うことで、アプリ内で複雑なウィンドウ管理を避け、ユーザーにシームレスなブラウジング体験を提供できます。
はじめに
iOS アプリで WKWebView
を使ってウェブコンテンツを表示することはよくありますが、リンクが新しいウィンドウやタブで開かれるように設計されている場合、デフォルトではその動作を処理する必要があります。特に、そのようなリンクを外部ブラウザで開きたい場合、このテクニックが有効です。
コードの解説
以下のコードは、新しいウィンドウを開くためのリンクがクリックされた場合、そのリンクを外部ブラウザで開く処理を行います。
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame == nil,
let url = navigationAction.request.url {
UIApplication.shared.open(url)
}
return nil
}
実際のアプリケーションでの使用例
このメソッドは、特にアプリ内で複数のウィンドウを管理したくない場合や、特定のリンク(例えば外部サイトへのリンク)を外部ブラウザで開きたいときに非常に有効です。
例えば、Webアプリケーションのユーザーが外部サイトへのリンクをクリックしたとき、そのリンクをアプリ内で処理せずに、Safariで開くようにしたい場合に、この方法を適用できます。
まとめ
WKWebView
で新しいウィンドウを開くリンクを外部ブラウザで処理するこの方法は、アプリ内でのウィンドウ管理をシンプルに保ちつつ、ユーザーに適切な体験を提供するために役立ちます。