In the most recent submission of my React Native iOS app to Appstore Connect, I recieved the following notification via email from Appstore Connect:
Dear Developer,
We identified one or more issues with a recent delivery for your app, "eSELFSERVE". Your delivery was successful, but you may wish to correct the following issues in your next delivery:
Invalid value for purpose string - The value 'NSLocationAlwaysUsageDescription' for Info.plist NSLocationAlwaysUsageDescription is not allowed. Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationAlwaysUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data.
After you’ve corrected the issues, you can use Xcode or Application Loader to upload a new binary to App Store Connect.
Best regards,
The App Store Team
They seem like contradictory errors and I am not sure how to solve them. Here is a fragment from my MyProject/Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>NSLocationUsageDescription</key>
<string>NSLocationUsageDescription</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>NSLocationAlwaysUsageDescription</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>NSLocationWhenInUseUsageDescription</string>
...
</dict>
</plist>
Here is a fragment from en.lproj/InfoPlist.strings:
...
NSLocationUsageDescription = "This app records your location when clocking in and out. Clocking in through this app may be rejected if location information is not provided.";
NSLocationWhenInUseUsageDescription = "This app records your location when clocking in and out. Clocking in through this app may be rejected if location information is not provided.";
NSLocationAlwaysUsageDescription = "This app records your location from time to time to expedite clocking in and out. Clocking in through this app may be rejected if location information is not provided.";
...
Here is a fragment es.lproj/InfoPlist.stings:
...
NSLocationUsageDescription = "Esta aplicación registra su ubicación cuando entra y sale. Entrando usando esta aplicación puede ser rechazado si no se proporciona información de ubicación.";
NSLocationWhenInUseUsageDescription = "Esta aplicación registra su ubicación cuando entra y sale. Entrando usando esta aplicación puede ser rechazado si no se proporciona información de ubicación.";
NSLocationAlwaysUsageDescription = "Esta aplicación registra su ubicación de vez en cuando para agilizar el registro de entrada y salida. Entrando usando esta aplicación puede ser rechazado si no se proporciona información de ubicación.";
...
I am also using the geolocation module of React Native 0.59.1.