iOS10ではカメラアクセスなどの目的を明示しないと強制終了する

  • 117
    いいね
  • 5
    コメント
この記事は最終更新日から1年以上が経過しています。

エラー内容

かなり前からあったオプションではあるようですが、
対応をしていないiOS10向けのビルドで例えばカメラにアクセスする処理を走らせると以下のようなエラーメッセージがコンソール出力され、強制終了します。
※Xcode8GMでデバッグビルドした場合のことなので、もしかするとストアアップロード版ではクラッシュしない「かも」しれません。

This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

これに関しては、エラーメッセージ内でも記述されているようにNSCameraUsageDescriptionのキーをinfo.plistに説明と一緒に記述することが必須になったということです。
Cocoa Keysのうち、以下のような注意書きがされているキーが今回必須になるものです。

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

参考

以下のサイトで、基本的なことはすべて解説されてました。

[iOS 10] 各種ユーザーデータへアクセスする目的を記述することが必須になるようです
http://dev.classmethod.jp/smartphone/iphone/ios10-privacy-data-purpose-description/

補足

Xcodeのプロパティリストから直接追加する場合は、Cocoa Keysの表で
[Xcode name] に書かれているように、Privacy - xxx の形で定義されているのでそこから選択してください。
例えばカメラなら、Privacy - Camera Usage Description です。
Valueに書いた内容がアラートに表示されます。

スクリーンショット 2016-09-12 2.12.11.png

alert.jpg

私はこれ、Enterpriseアプリだから大丈夫だけどストアのアプリは間に合うんだろうか・・・。

追加情報

コメントでいただいた情報から、PrivacyがInfo.plistに明示されていないと
ストアへのアップロードから正常に行えないようです。
これからのアプリでは気をつけていかないといけませんね。。。