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

2 min
アイキャッチ画像

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

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

https://developer.apple.com/news/?id=12232019b

発表内容をまとめると

発表内容をまとめ
  • UIWebViewはセキュリティの関係で好ましくないからWKWebViewなどに移行してね
  • 新規アプリは2020年4月までしかAppStoreの審査を通しません
  • 既存のアプリは2020年12月以降はAppStoreの審査を通しません
https://www.ryukasublog.com/wp-content/uploads/2020/04/fuki_pose_tobokeru.jpg

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

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

https://www.ryukasublog.com/wp-content/uploads/2020/04/fuki_pose_tobokeru_woman.jpg

https://www.ryukasublog.com/wp-content/uploads/2020/04/fuki_pose_tobokeru.jpg

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を使用したアプリの更新を受け付けなくなります。

ちゃんと対応しないとリリースできなくなるので気をつけましょう、

カテゴリー:
タグ:
関連記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です