目次
iOSのUIWebViewについてどういう発表があったか
iOS10からDeprecatedになっていたUIWebViewの期限が遂に公式から発表されました。
https://developer.apple.com/news/?id=12232019b
発表内容をまとめると
- UIWebViewはセキュリティの関係で好ましくないからWKWebViewなどに移行してね
- 新規アプリは2020年4月までしかAppStoreの審査を通しません
- 既存のアプリは2020年12月以降はAppStoreの審査を通しません
- 問題なく表示できてるし、工数もかかるから修正はいいや
- 古いライブラリ内でつかっていて、修正するのが大変だからやめておこう
- WKWebViewは今の機能を以降できないから今はやめておこう
様々な理由がありますが、放置しておくと
審査を通らなくなりアプリが更新できなくなるので、
対応はしなくてはならなくてはいけません
ただ、WKWebViewに単純に置き換えるプロジェクトとそうでないプロジェクトがありますので説明していきます。
WKWebViewに単純に置き換えれる人、できない人
WKWebbViewに置き換えるにあたって気にしないといけないのが対応iOSのバージョンで
iOS12以上であれば問題はありませんWKWebViewに置き換えましょう
それ以外の人は気をつけないといけない点がいくつかあります
WKWebViewに置き換える際に気をつけなければいけない点
今回は根本的な対処が難しいものをあげていきます
iOS11以下がサポート対象
- WKWebView でクライアント証明書を使ったSSL通信が正常に問題
以下のDelegateが正しく動いてくれなかった
https://developer.apple.com/documentation/webkit/wknavigationdelegate/1455638-webview
セキュアアクセスがないアプリは問題ないのですが、
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でも可能な場合もあるので合わせ検討して対応していくのがいいと思います。
追記
https://developer.apple.com/news/?id=12232019b
正式にお知らせがきました、WWDCの発表通り
2020年4月時点でUIWebViewを使用した新しいアプリや、2020年12月時点でUIWebViewを使用したアプリの更新を受け付けなくなります。
ちゃんと対応しないとリリースできなくなるので気をつけましょう、