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

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