アプリにUIWebViewが含まれている場合、App Store Connectへのアップロード時にITMS-90809の警告がメールで送信されたりするかと思います。
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. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).
警告にもある通り、既存アプリでUIWebViewを利用している場合は2020年12月で受け付けがされなくなるようなので、それまでに対応が必要です。
(参考: ウェブビューを使ったAppのアップデート - ニュース - Apple Developer)
アプリ本体のコードに含まれている場合は "UIWebView" のようなキーワードでgrepして探せばいいのですが、依存しているFrameworkの中にあると探しづらいです。
ここでは、nm
コマンドを使ってシュッと探す方法をご紹介します。
方法
FRAMEWORK_DIRS=$(find . -name '*.framework')
for framework in $FRAMEWORK_DIRS; do
fname=$(basename $framework .framework)
echo $framework/$fname
nm $framework/$fname | grep UIWeb
done
こんな感じのシェルスクリプトを作って実行すれば楽に探せます。
解説
nm
コマンドは、オブジェクト内のシンボルをリストするコマンドです。
(参考: nmコマンドでオブジェクトからシンボルのリストを表示 - Qiita)
このコマンドを使ってFramework内にUIWebViewのシンボルがあるかを調べることができます。
アプリで使われているFrameworkは複数あることが多く、CocoaPodsやCarthageなどで管理されていることも多いと思います。そのため、シェルスクリプトにしてプロジェクトディレクトリ配下のFramework全てに nm
するようにしています。