'How to test the purpose string of NSPhotoLibraryUsageDescription in iOS using Expo?
I've been struggling to verify if the purpose string for photo library access really is working as expected. It started with the application got rejected because it wasn't set.
Using expo-image-picker, it says in the docs that adding this into the plugins section in app.json should set the NSPhotoLibraryUsageDescription:
[
"expo-image-picker",
{
"photosPermission": "This allows you to upload a photo to your Appname profile."
}
]
Before I added this, I basically added NSPhotoLibraryUsageDescription to the plist key inside ios section in app.json. What I can see, both do exactly the same thing.
After building ios using expo build:ios
I was able to verify that that the string existed in the Info.plist file:
<key>NSPhotoLibraryUsageDescription</key>
<string>This allows you to upload a photo to your Appname profile.</string>
Using Expo Go doesn't really help since when requesting permissions, it says "Expo Go" in the alert.
Also, I only have experience working with Expo / React Native, and have no access to a mac (or xcode).
When apple test this, it looks like this (according to their screenshot):
While the expected text should be:
This allows you to upload a photo to your Appname profile.
How can I verify that the purpose string is really set (and works) before submitting an application to App store?
Solution 1:[1]
My solution:
First I set up my app for an EAS build. If you're not familiar with that you should check out the docs: https://docs.expo.dev/build/introduction/
Basically you do this:
- install eas-cli:
npm install -g eas-cli
- run
eas build:configure
to initialize an eas.config file. - configure your eas build profiles. Mine look like this:
I collapsed the submit block to hide my credentials. Sorry for the photo instead of code/text. The formatter kept messing it up.
Any way, trigger a build using eas build -p ios --profile development
. Notice the simulator flag set to true. This will allow you to run this as a stand-alone binary in your simulator.
When your build completes, go to expo.io and log into your account. Click on your project and download the binary for your ios build (under the builds tab). Unzip the binary and drag it into your simulator. You may be prompted with a message that says that you need to start up your development server. Just follow those simple instructions and there you go. You'll be able to see if your NSPhotoLibraryUsageDescription
string updated.
Admittedly, this can be a pain in the (insert donkey emoji here - still don't have one yet Apple....?) and you're kind of executing outside of the expo environment, but it solves the problem of wondering if your string has updated before posting to the store again.
Best of luck. Hope that helps.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Jo Momma |