1 Reply
      Latest reply on May 8, 2019 1:25 AM by eskimo
      tga95 Level 1 Level 1 (0 points)

        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.

        • Re: Invalid value for purpose string in info.plist
          eskimo Apple Staff Apple Staff (11,265 points)

          It’s unusual to use the NSLocationXXX keys as values.  Normally you set the value in the Info.plist to be that of your development language, and then add entries in the localised strings files that need to override that.

          Share and Enjoy

          Quinn “The Eskimo!”
          Apple Developer Relations, Developer Technical Support, Core OS/Hardware
          let myEmail = "eskimo" + "1" + "@apple.com"