if you provide only NSLocationWhenInUseUsageDescription , your application will only ever ask for location access permission “when in use”,
if you provide both NSLocationWhenInUseUsageDescription and NSLocationAlwaysAndWhenInUseUsageDescription , your application will only ask for “when in use” permission on iOS 10, whereas on iOS 11+ it will show a dialog to the user where he’ll be able to pick whether he’d like to give your app permission to access location always or only when the app is in use,
if you provide all three: NSLocationWhenInUseUsageDescription , NSLocationAlwaysAndWhenInUseUsageDescription and NSLocationAlwaysUsageDescription , your application on iOS 11+ will still show a dialog described above and on iOS 10 it will only ask for “always” location permission.
I provided all three, yet on iOS 11+ (I’m on 13), it doesn’t show the “Always” option. It should show “Always” alongside “When In Use”.
I’m using a compiled stand-alone version in test flight.