質問: App Store Connectへのアップロードは成功しましたが、App Store Connectのビルドの横に+のマークがでていませんでした。その理由としては恐らくAppleから以下の様なメールが届いていた事が原因だと思います。 > > Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSContactsUsageDescription 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 will be 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. > > > これはアプリで連絡先にアクセスするならその処理(使用理由など)をplistに追加しろとのもので、この他にもマイクにアクセスするならとかその他センサーにアクセスするなら、といった分がありました。しかしアプリ内ではそれらの機能を実装した覚えはありません。もしかしたらpodで入れたライブラリにその様な機能があったのかもしれませんが、自分のアプリを使っている上ではその許可は出てきません。しかしこれではApp Store Connectへビルドを追加できないため、以下の様に ``` NSContactsUsageDescription 使用しません ``` としました。しかし使用しないものの使用許可の処理を書いておく事に問題は無いでしょうか?
回答: メールの内容を読むと "Starting Spring 2019"と書かれているので、つい最近このチェックが開始されたのだと思います。 メールの中でも説明されていますが、自分のアプリで連絡先にアクセスする処理を作っていなくても、利用している外部ライブラリやSDKの中に連絡先にアクセスする処理があれば、このチェックに引っかかるのだと思います。(おそらく、外部ライブラリやSDKの中で実際にそれを呼び出して実行することがなくても、静的コード解析により、連絡先にアクセスする処理がどこかに残っているだけで検出されるのだと思います。) どのライブラリに連絡先にアクセスする処理が入っているのか調べて、正当な理由があれば、そのアクセス理由をNSContactsUsageDescriptionに記述する必要があると思います。 正当な理由もないのに連絡先にアクセスする処理が入っているのであれば、そのメールの中でも説明されていますが、利用しているライブラリやSDKの開発元に連絡して、その処理を削除したものを提供してもらう必要があると思います。 もし対応してくれそうにないなら、別のライブラリの利用を検討するか、問題のライブラリを利用せず処理を自作するといった対応も検討する必要があると思います。