[iOS 10] ユーザーのプライバシー情報にアクセスするときは理由を書こう

2016.09.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

書かないとリジェクトされます

iOS 10 からユーザーのプライバシー情報にアクセスする際のセキュリティが強化されました。
メディアライブラリフォトライブラリ にプログラムからアクセスする場合は Info.plistキー値説明文(利用目的)を書く必要があります。
詳しくは弊社の 平屋が書いたブログ をご覧ください。

説明文

各種データへのアクセス許可をユーザーに確認するときに出てくるダイアログで表示される文言です。

1

Info.plist での設定

2

この説明文、厄介なことに キー値 さえ書いておけば は無くても動きます。
Xcode の Validate も通ります。
ただし、iTunes Connect にバイナリをアップロードしたタイミングで invalid binary とみなされリジェクトされます。
審査はしてもらえず、以下のようなメールが送られてきます。

Dear developer,

We have discovered one or more issues with your recent delivery for "My App Name". 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.

Regards,

The App Store team

「アプリの Info.plist はプライバシー情報に関する キー文字列値 を含まなければならない」、だそうです。
空文字じゃだめなんですね。

おそらく Privacy - から始まるキー値に関しては同じようなことが起こると思います。
リファレンス にも以下のような記述があるので、ユーザーデータにアクセスする際は確認してみてください。

Important: To protect user privacy, an iOS app linked on or after iOS 10.0, and which accesses the user's photo library, must statically declare the intent to do so. Include the NSPhotoLibraryUsageDescription key in your app's Info.plist file and provide a purpose string for this key. If your app attempts to access the user's photo library without a corresponding purpose string, your app exits.

3

手戻りを無くすために、説明文はきちんと書くようにしましょう。
一度バイナリが却下されると、再アップロードするためにはアプリの ビルド番号 も更新しなければなりません。
気をつけてください。

リンク

ミレニアム・ファルコン製作日記 #37

37 号 表紙

mfd_37_1

パーツ

mfd_37_2

mfd_37_3

mfd_37_4

成果

mfd_37_5

mfd_37_6

今回の作業は以下の 2 つでした。

  • 下部外殻フレームを組み立てる
  • 外殻プレートのディテールアップ

前号まで組み立て続けた、搭乗ランプの構造とモーターの支えを完成させました。
あとはビスで留めれば下部フレームの円が完成しそう。
もう少しだ!

外殻プレートのディテールアップでは、前号で提供された大きなプレートの表面にプラントオン・ディテールアップパーツを取り付けました。
徐々にでかいパーツが送られて来ています。
今後が楽しみ。
どんと来い。

それではまた次回。

May the Force be with you!