XcodeでカメラアプリにはNSPhotoLibraryUsageDescription key必要
MaskCamという超すごい大人気アプリを3年前に作ったのですが、例によって、アップル様からアップデートしてね、の通知が来たので、これも直して提出ししています。
(低品質又は名前が長いiOS,iPhone,iPadアプリがApp Storeから削除される参照)
The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this dataというエラーメッセージ
適当に最新のiOSに対応するように、最新版のXcodeで手直ししてitunes connectにアップロードをすると、問題なく送信が完了しました。
しかし、サイト上でいつまでたっても「ビルド」のところに送信済みのバージョンのバイナリが表示されず、選択ができません。
つまりいつまでも更新版のバイナリを審査に提出できない。
まあバイナリのアップロード後に、なかなか送信処理がitunes connect上で完了せず、悶々とすることは割とあったのですけど、それにしても様子がおかしい。
ちゃんとアップロードにsuccessしたのにおかしいなあと思っていたところ、以下のようなメールが私に届いていたようです。
Dear developer,
We have discovered one or more issues with your recent delivery for "MaskCam". To process your delivery, the following issues must be corrected:
This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.
Once these issues have been corrected, you can then redeliver the corrected binary.
Xcode上では「アップロードは問題なく完了したよ」と表示されても、こうやってエラーが出ることもあるらしいです。初めて知った。
内容は多分、このカメラアプリは「写真フォルダ」にアクセスしようとしていて、写真はプライバシー性のある部分だから、使用者に対し、そのプライバシー性のある部分にアプリがアクセスしようとしていることと、その理由を明示せよ、ということだと思います。
xcodeやswiftはちょっと使っていないだけで色々と仕様が変わるので、継続的に使っていないとついて行けなくなりますね。
それでInfo.plistで「NSPhotoLibraryUsageDescription key」というものを探してみたけれども、一向に見つからない。
どうすればいいのだろうかと考えていたら、以下のような役立つサイトがありました。
http://iOS10ではカメラアクセスなどの目的を明示しないと強制終了する
なるほど、「Info」タブの「Custom iOS Target Properties」で選択すべきキー名は、「NSPhotoLibraryUsageDescription」というものではなく、「Privacy - Photo Library Usage Description」というものなのですね。。
わかりにくい。。。
そこで、英語でどう書いたらいいのかわからないけど、写真にアクセスする理由・目的を「Accessing to the Photo Library when you take a photo and save it.」とでも書いておきました。
iPhoneアプリの審査は厳しいと言われますし、拒絶される理由もわからないとも言われますが、こういった英語の表現を理由に拒絶されることはありません。多分。
英語がブロークンでおかしかろうが、全然OK。多分。
まあ私のアプリのように、撮った写真を色々加工したりするアプリであれば、写真にアクセスすることになるのは必至でしょうから、keyに上記のような記載を明示することは必須になるでしょうね。
以前より微妙に手続きが複雑になりました。