Cordova iOS アプリで UIWebView から WKWebView への移行方法
はじめに
Cordova iOS アプリで Deprecated となっている UIWebView から WKWebView へと移行する方法。
TL;DR
- UIWebView を使ったアプリを App Store Connect にアップロードすると「バイナリが無効」や「アップロードしてもリジェクト」となる
- CordovaのUIWebView→WKWebView移行についてまとめ - Qiita を参考に WKWebView に切り替えると解決
cordova plugin add cordova-plugin-wkwebview-engine
でプラグイン追加config.xml
を編集
目次
環境・条件
1 | $ sw_vers |
詳細
前置き
経緯などを書いてるだけなのでスキップして OK
2020/06/02、とある Cordova 製 iOS アプリを App Store Connect にアップロードしたところ、最初は問題なく処理されたのにいざ審査に進むと「バイナリが無効」となった。
もともと UIWebView を使っていて、アップロード時に以下の通知メールが届くことは認識していたが、「December 2020」との表記もあったため(よろしくは無いのだが様々な事情で)そのままとしていた。
ITMS-90809: Deprecated API Usage - App updates that use UIWebView will no longer be accepted as of December 2020. Instead, use WKWebView for improved security and reliability.
しかし、いざ審査に進むと「バイナリが無効」となり、下記記事に行き当たったが自分の状況には当てはまらず。。。
- App Store Connect アプリ配布でバイナリが無効エラー - Qiita
- App Store Connectへのアプリのアップロードは成功するのに、直後に ITMS-90035: Invalid Signature でバイナリが無効にされてしまう問題 - Qiita
手順や設定に何かミスがあったかなと思い、再度アップロードするも今度はアップロードすら成功せず。
その時に受信したメールが以下。同じように見えるが「as of December 2020」の表記が消えており、どうも UIWebView を使っていることが原因な模様。
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.
さらに調べて [速報] [iOS] UIWebViewが使えなくなる最終期限が告知されました - Qiita に行き当たる。
引用すると以下の通り。
2020年4月から、新規のApp Store申請時にUIWebView APIが含まれていると、リジェクトされる模様です。
アップデートについては2020年12月までにUIWebViewからWKWebViewへの修正が必要です。
2020年5月から、新規アプリにUIWebView APIが含まれていると、App Store Connectへのアップロード時にビルドが受け付けられない(ビルドを審査提出できない)です。
なので、初審査で UIWebView が含まれていたことがどうもダメだったっぽい。
本題: WKWebView への移行方法
参考: CordovaのUIWebView→WKWebView移行についてまとめ - Qiita
基本的に上記ページを参考にすれば OK。
cordova-ios バージョン変更
cordova-ios
のバージョン確認、4.0.0
以降なら OK
1 | $ cordova platform |
3.x.x
であればプラットフォームを再構築すると良いはず。
1 | $ cordova platform remove ios && cordova platform add ios |
プラグイン追加
cordova plugin add
で apache/cordova-plugin-wkwebview-engine を追加。
1 | $ cordova plugin add cordova-plugin-wkwebview-engine |
config.xml 編集
公式ページ、前述の Qiita を参考に config.xml
に以下の設定を追加。
1 | <?xml version='1.0' encoding='utf-8'?> |
基本的にはこれで OK。他にもハマりポイントがいくつかあるようなので、そちらは CordovaのUIWebView→WKWebView移行についてまとめ - Qiita を参照。
まとめ
- UIWebView を使ったアプリを App Store Connect にアップロードすると「バイナリが無効」や「アップロードしてもリジェクト」となる
- CordovaのUIWebView→WKWebView移行についてまとめ - Qiita を参考に WKWebView に切り替えると解決
cordova plugin add cordova-plugin-wkwebview-engine
でプラグイン追加config.xml
を編集
参考文献
- CordovaのUIWebView→WKWebView移行についてまとめ - Qiita
- apache/cordova-plugin-wkwebview-engine: Apache Cordova wkwebview engine plugin
- Updating Apps that Use Web Views - News - Apple Developer
- [速報] [iOS] UIWebViewが使えなくなる最終期限が告知されました - Qiita
関連記事
- Cordova iOS axios で Network Error となる場合の回避策
- Cordova でアプリ名やアプリのバージョン情報などを取得
- Cordova iOS アプリで長押し(ロングタップ, ロングプレス)によるコンテキストメニューを無効化
- Cordova で端末やエミュレータを指定してデプロイする
- Cordova で Repro とカスタム URL スキームを使ってディープリンクを扱う
- Cordova で Splash Screen を設定する cordova-plugin-splashscreen
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア