We just submitted our app to the app store but got rejected for the following reason:
Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSLocationAlwaysUsageDescription key with a string value explaining to the user how the app uses this data.
Our app never asks for these permissions and never imports the expo permission api. Is this something to do with expo’s default settings?
Hi all! We believe Apple just changed their review mechanism to start enforcing this. Since we haven’t actually changed our exp build server to support SDK 27 yet, you’re getting the same code that has been there for the last month.
We’re looking into it. It’s taking some time to test because we are repeatedly submitting test builds to Apple internally and waiting for them to “process”.
We have a fix internally, but we’re currently blocked from testing the fix because Apple Testflight itself appears to be down for us. Great timing. As soon as we can verify, we’ll deploy the fix.
We just deployed the fix. If you rebuild your app, the resulting ipa file won’t suffer from this issue. Really sorry about the delay on this, as mentioned earlier, we were blocked by the multi-day Apple TestFlight outage.
Although I re-build it, I am still suffering the issue. Do I have to replace the Expo SDK version?
I am currently using “sdkVersion”: “25.0.0”.
Or, Just do the exp build:ios ?
It would be very helpful if you give more detail instruction about it.
newly added.
Okay, so I build it successfully, and I submitted the app, and there is no any rejection.
However, after install and execute it, it shows same error that
This app is missing NSLocationWhenInUseUsageDescription, so location services will fail. Add one of these keys to your bundle's Info.plist.
@syou, it looks like you have a different error message which was not mentioned in the original post. NSLocationWhenInUseUsageDescription is different than NSLocationAlwaysUsageDescription. We provide NSLocationWhenInUseUsageDescription automatically for you when you run exp build, so if your app is missing that string, it probably means you are overriding it somewhere.
@marc.weeber, the fix was to change all of our binaries to remove all native iOS calls to requestAlwaysAuthorization. This method was present in some React Native code but never used. Nonetheless, it was triggering a warning from Apple’s static analysis during submission. If you want to take advantage of the fix, all you need to do is re-run exp build:ios and you’ll get the updated native code.