0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WKWebViewで新しいウィンドウを開くリンクを外部ブラウザで処理する方法

Last updated at Posted at 2024-08-09

概要

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 で新しいウィンドウを開くリンクを外部ブラウザで処理するこの方法は、アプリ内でのウィンドウ管理をシンプルに保ちつつ、ユーザーに適切な体験を提供するために役立ちます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?