【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, NSLocationAlwaysUsageDescriptionの3種類の設定をしておきましょう。

私はこのように「位置情報の記録に必要です」と記述しています。
モーションアクティビティの他にも、カメラの使用許可、マイクの使用許可など様ざまな時に上記のような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 |
