【Xcode9】The app's Info.plist must contain both NSLocationAlwaysAndWhenInUseUsageDescription and NSLocationWhenInUseUsageDescription keys ~~ というエラーが出た時の対処方法【iOS11】

2019年8月29日

CoreLocationによる位置情報を取得を使用したアプリ開発をし、ビルドすると以下のようなエラーが出る場合があります。

This app has attempted to access privacy-sensitive data without a usage description.

The app's Info.plist must contain both NSLocationAlwaysAndWhenInUseUsageDescription and NSLocationWhenInUseUsageDescription keys with string values explaining to the user how the app uses this data

このエラーが出た時は、アプリで位置情報の使用許諾アラートが出た時に記載される説明文をplistで設定しておかなければいけません。

位置情報なのでNSLocationAlwaysAndWhenInUseUsageDescription, NSLocationWhenInUseUsageDescription, NSLocationAlwaysUsageDescription3種類の設定をしておきましょう。

私はこのように「位置情報の記録に必要です」と記述しています。

モーションアクティビティの他にも、カメラの使用許可、マイクの使用許可など様ざまな時に上記のようなplistの設定が必要です。覚えておきましょう!

その他の Information Property Key 一覧

対象となる操作対応するキー
メディアライブラリへのアクセスNSAppleMusicUsageDescription
Bluetooth インターフェースへのアクセスNSBluetoothPeripheralUsageDescription
カレンダーへのアクセスNSCalendarsUsageDescription
カメラへのアクセスNSCameraUsageDescription
連絡先へのアクセスNSContactsUsageDescription
ヘルスデータへのアクセスNSHealthShareUsageDescription
ヘルスデータの変更NSHealthUpdateUsageDescription
HomeKit の設定データへのアクセスNSHomeKitUsageDescription
位置情報へのアクセス (常に許可)NSLocationAlwaysUsageDescription
位置情報へのアクセス (使用中のみ許可)NSLocationWhenInUseUsageDescription
位置情報へのアクセス (使用中、常に、両方許可)NSLocationAlwaysAndWhenInUseUsageDescription
マイクへのアクセスNSMicrophoneUsageDescription
加速度計へのアクセスNSMotionUsageDescription
フォトライブラリへのアクセスNSPhotoLibraryUsageDescription
リマインダーへのアクセスNSRemindersUsageDescription
Siri へユーザーデータ送信NSSiriUsageDescription
Speech Recognition Server へのユーザーデータ送信NSSpeechRecognitionUsageDescription