スポンサーリンク

【Swift4】外部の http のサイトを WKWebView で開く(ATS 対応)

ATS (App Transport Security) が出てきてずいぶん経ちますが、まだまだ世の中には SSL に対応していないサイトがたくさんあると思います。

私も今 3時のOYATSU にて『おやつの新着情報を web からクロールしてきてアプリ内に表示する』という機能を開発しているのですが、メーカーの公式サイトであっても SSL 対応していないサイトがいくつかありました。

ここで NSAllowsArbitraryLoads を true にするという選択肢を取ることはもちろんよろしくないので、人によっては NSExceptionAllowsInsecureHTTPLoads に除外するドメインを書いてくかもしれません。
ただ、これは非常に面倒くさい作業であり、外部 web サイトを表示する場合だとどうしても書ききれなくなる場合があります。

『http のサイトのみ Safari で開く』といった解決策もあるのですが、実は iOS10 以降対応であればもっと楽な解決方法があります。

iOS10 から NSAllowsArbitraryLoadsInWebContent というキーが追加されており、これを true にすれば WKWebView で開く場合のみ http でも通信できるようになります。
(実際は UIWebView も対応のようですが非推奨のため除外します)

実際に info.plist に書くとこんな感じになります。

これで無事 http のサイトも WKWebView で表示できるようになりました。

※この記事の内容は https://3jino-oyatsu.com/blog/67/ からお引越ししたものです

タイトルとURLをコピーしました