はじめ
先日、アプリで使用しているWebViewを非推奨APIとなっているUIWebViewからWKWebViewへ移行しました。
これでアプリ内からUIWebViewはいなくなりました。
と思っていたのですが、それでもAppleから「UIWebViewを使わないでね」という連絡がやってきてしまいました。
Dear Developer,
We identified one or more issues with a recent delivery for your app, <アプリ名>. Your delivery was successful, but you may wish to correct the following issues in your next delivery:
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs starting from December 2020 . See https://developer.apple.com/documentation/uikit/uiwebview for more information.
After you've corrected the issues, you can upload a new binary to App Store Connect.
Best regards,
The App Store Team
プロジェクト内を「UIWebView」で検索したところPods内のAFNetworking/UIKitがヒットしました。
原因はAFNetworking/UIKitに含まれているUIWebViewの拡張機能でした。
これからプロジェクトを修正してUIWebViewを根絶やしにしていきたいと思います。
修正方針
AFNetworkingのissueを参考に修正します。
issueでは以下の修正方法などが紹介されています。
- AFNetworking/UIKit内のUIWebViewに関するファイルを削除する方法
- 不要な依存関係(AFNetworking/UIKit)を削除する方法
前者はチーム開発の場合に各々がファイルを削除することになり、ミスに繋がると思いました。
また、Pods内を編集すること自体にも抵抗があります。
今回は後者の方法で修正することにしました。
修正
まずは、Podfileの該当行を修正します。
'UIKit'
以外の必要なsubspecsを指定します。
# pod 'AFNetworking'
# ↓
pod 'AFNetworking', :subspecs => ['Reachability', 'Security', 'Serialization', 'NSURLSession']
そして、インポートするファイルが変わるためアプリ側のソースも合わせて修正します。
// #import "AFNetworking.h"
// ↓
#import <AFNetworking/AFNetworking-umbrella.h>
最後に、pod install
すれば問題なく動くはずです。
まとめ
アプリでUIWebViewを使用していないのにもかかわらず、Appleから連絡が来てしまう場合はライブラリが原因かもしれません。
ライブラリのissueを確認するなどして対応するといいと思います。
今後、UIWebViewが含まれているアプリはリジェクトされるようになります(新規アプリは2020年4月、アップデートは2020年12月から)。
本記事がアプリ開発の助けになれば幸いです。