iOSのUIWebViewのDeprecated対応期限は既存アプリは2020年12月まで、新規アプリは2020年4月まで

iOSのUIWebViewについてどういう発表があったか

iOS10からDeprecatedになっていたUIWebViewの期限が遂に公式から発表されました。

Updating Apps that Use Web Views - News - Apple Developer
If your app still embeds web content using the deprecated UIWebView API, we strongly encourage you to update to WKWebView as soon as possible for improved secur...

発表内容をまとめると

  • UIWebViewはセキュリティの関係で好ましくないからWKWebViewなどに移行してね
  • 新しいアプリは2020年4月までしかAppStoreの審査を通しません
  • 既存のアプリは2020年12月以降はAppStoreの審査を通しません

今までDeprecatedになっていたのは知っていたけど

問題なく表示できてるし、工数もかかるから修正はいいや

古いライブラリ内でつかっていて、修正するのが大変だからやめておこう

WKWebViewは今の機能を写せないから今はやめておこう

審査を通らなくなるとアプリが更新できなくなるので、
対応はしなくてはならなくてはいけません

ただ、WKWebViewに単純に置き換えるプロジェクトとそうでないプロジェクトがあります

WKWebViewに単純に置き換えれる人、できない人

WKWebbViewに置き換えるにあたって気にしないといけないのが対応iOSのバージョンで

iOS12以上であれば問題はありませんWKWebViewに置き換えましょう

それ以外の人は気をつけないといけない点がいくつかあります

WKWebViewに置き換える際に気をつけなければいけない点

今回は根本的な対処が難しいものをあげていきます

iOS11以下がサポート対象

  • WKWebView でクライアント証明書を使ったSSL通信が正常に問題

以下のDelegateが正しく動いてくれなかった

webView(_:didReceive:completionHandler:) - WKNavigationDelegate | Apple Developer Documentation

セキュアアクセスがないアプリは問題ないのですが、
iOS12以降なら問題が解決されているのでiOS12以降のサポート対象検討が必要

iOS10以下がサポート対象

  • WKWebViewキャッシュ問題
  • POSTでリクエストする時、httpBodyがnilになる問題

WKWebViewキャッシュ問題

アプリのキャッシュ が肥大化していくという問題があり(10.3以降なら問題なし)

以下のスライドがよくまとめられているので参考に貼っておきます

POSTでリクエストする時、httpBodyがnilになる問題

これはWKWebViewのバグでiOS11以降では修正されているのですが、10.2で治っていたとおもったら10.3ではダメだった事もあったので、POSTリクエストがある場合にはiOS10で対策するのではなく対象サポートをiOS11以降にする検討をした方がいいと思います

まとめ

UIWebView自体にもパフォーマンスやセキュリティの観点で様々な問題があるので
早めにWKWebViewに乗り換える方がいいのですが…

WKWebViewにも色々とバグがあり上記のような点を考慮に入れないと対応できないので非常に苦労することになるので気をつけてください

今回紹介はしていませんがSFSafariViewControllerでも可能な場合もあるので合わせ検討して対応していくのがいいと思います。

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