iOSアプリを更新しようとしたらITMS-90683が出た話
iOSアプリを更新する際はアプリケーションデータをAppleへ提出する必要があります。
Appleのアプリは審査があることで有名ですが、実際に審査が行われる前に、アプリは機械的な審査を受けます。
今回はその機械審査の際に来たメールについてお話します。
アプリを提出する
iOSアプリは通常、 Xcode から提出することがほとんどだと思います。
基本的には Xcode の Organizer から Distribute App で Apple へ提出できます。
この提出アップロード後、しばらくしてからアプリの申請をすることができますが、この間にアプリケーションは機械的な審査を受けています。
具体的には プログラムやソースコードから分かるレベルでのエラーや違反のチェック です。
この機械審査には 使用してはならない機能 や 削除の可能性が高い非推奨の機能の使用、アプリケーションの設定ミス など、多岐にわたります。
機械審査に引っかかってしまった場合、機械的なエラーメールが開発者へ送信されます。
届いたメールの内容次第で 審査提出不可、 審査は可能だが要改修の警告 など、対応が変わってくるところが、iOSアプリ開発者を困惑させてきます。
ITMS-90683と出会う
基本的に Appleの主旨に沿うようにアプリを改修していく ようにすれば、原則として引っかかることはありません。
非推奨になったメソッドや機能を適宜改修していくことはアプリの保守として必須となります。
ここが アプリは作ってストアに公開したらおしまい とならない所以です。
しかし、先日アプリのアップデートの際に下記のようなメールが Apple から届きました。
App Store Connect: Your app “[アプリ名]” has one or more issues.
ITMS-90683: Missing Purpose String in Info.plist
Your app’s code references one or more APIs that access sensitive user data.
The app’s Info.plist file should contain a [info.plistに設定すべきキー項目名] key with a user-facing purpose string explaining clearly and completely why your app needs the data.
Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string.
If you’re using external libraries or SDKs, they may reference APIs that require a purpose string.
While your app might not use these APIs, a purpose string is still required.
You can contact the developer of the library or SDK and request they release a version of their code that doesn’t contain the APIs.
Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).
内容は文章そのままで ユーザーのプライバシーに関するデータにアクセスするのに必要なキー項目が info.plist に設定されていない というものでした。
しかし、使用しているアプリでは必要な情報はすべて記載済み、どうして引っかかったのでしょうか・・・。
原因は使用しているライブラリかも・・・?
iOSアプリではライブラリをよく使用することがあり、今回はアプリおよび使用しているライブラリのアップデートを行いました。
その際、ライブラリがプライバシーを必要とする機能を追加したため info.plist に記載しなければならないキー項目が増えた というわけです。
一例ですが、このプライバシーに関する内容は下記のようなものが対象となります。
- NSBluetoothAlwaysUsageDescription / Bluetoothに関する設定
- NSLocationAlwaysUsageDescription / 位置情報に関する設定
- NSCalendarsUsageDescription / カレンダーに関する設定
- NSCameraUsageDescription / カメラに関する設定
- NSPhotoLibraryUsageDescription / 写真に関する設定
原因が分かれば答えは簡単、 info.plist に必要となるキー項目を追加 しましょう。
幸いなことに、必要なキー項目はメールに記載されていますので、追加するだけでOKです。
さいごに
Apple はユーザーのプライバシーに関しては開発者に対しても非常に厳しく取り扱っていることが良くわかります。
開発者として Apple の更新は時に煩わしくもありますが、一利用者としては非常に安心できるものでした。
審査基準をクリアして楽しくiOSアプリを開発していきましょう。
- おすすめ記事
POPULAR
のえる
Full-stack Developer