How to remove app request for user's camera and location

I have an un-detached app, which I submitted to IOS app store, but it was rejected for the following reason. I don’t use camera or location in my code. How do i stop expo doing this? can I set in my app.json ?

Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage

We noticed that your app requests the user’s consent to access their camera and location but does not clarify the use of this feature in the permission modal alert.

Next Steps

To resolve this issue, please revise the permission modal alert to specify why the app is requesting access to the user’s camera and location.

The permission request alert should specify how your app will use this feature to help users understand why your app is requesting access to their personal data.


I see a similar thread here but it looks unresolved - Remove IOS permissions - #6 by rmena
In my case the app was rejected, it was not just a warning.

Also in your documentation here - https://docs.expo.io/versions/latest/sdk/permissions#expopermissionslocation
you say “Note (iOS):** In Expo Client this permission will always ask the user for permission to access location data while the app is in use.” what does this mean and why? is this what is causing the location permission?

Hey @patricklock,

When did you build the .ipa for this? It certainly shouldn’t be requesting permissions for these if you don’t explicitly use the APIs. Also, what SDK version is the build and ideally can you provide us with the build ID?

Cheers,

Adam

Hi @adamjnav
I built the .ipa on 30th November 2018.
Build ID: 78d1406e-0f3f-4123-b3cd-0b2889b1f060
SDK version: 30.0.0
The only expo API I use is Expo.DangerZone.Localization.getCurrentDeviceCountryAsync() but that doesn’t say it uses Location permission in the docs. I certainly don’t use Camera.

Thanks

Hi @adamjnav I am currently blocked and can’t release my app. This is a showstopper. Is there anything you can do to help please?

Hey @patricklock,

Sorry for the delay here. This week has been filled with several company events and holiday events. The fact that I haven’t seen any other reports makes me thinks this may be some transient issue. By chance have you tried to build a new .ipa and test to see if it requests permissions for these APIs in TestFlight?

Hey @adamjnav I already have the same version in TestFlight and I am not asked for any permissions when I open the app. I even tried deleting it and reinstalling it. I can add you as a tester in test flight so you can see if you give me your email address. I have built a new version (increased build number) anyway to see if it was transient, but how can I test this before doing another submission to the app store?

Hey @patricklock,

You can add me as a test adamjnav@expo.io

Thanks, I’ve sent an invite from TestFlight

@adamjnav I submitted the new build and it was rejected again from the App store for the same reason.

:disappointed: Alright, let me see what I can find out today. Going to ping @esamelson as he’ll have the best idea of what to do moving forward. Really sorry about this, Patrick. What’s most confusing is this seems to only be occurring for you.

@patricklock - thanks for letting us know about this, and sorry it’s blocking you :disappointed: It’s odd that you’re getting this rejection from Apple even though your app never shows these particular permissions dialogs (at least that’s what I’m assuming based on what you’ve said).

Every Expo app contains native code to request these permissions, even if your JS does not call into those particular modules – that’s how we let you use those modules with OTA updates even if your original app build did not include the Camera or Location module. Along with this we include some boilerplate strings like this in your Info.plist to allow your app to pass Apple review. This has worked in the past, but it’s possible that with the recent high-profile news stories about location tracking, Apple is enforcing this more strictly and these boilerplate strings no longer suffice.

We’re looking into solutions for this, but in the meantime, you could try adding custom permissions dialogs strings to your app.json for Camera and Location as described in this guide. Since your app doesn’t use Camera or Location, you could try providing some more descriptive strings, like “Do you wish to let access your current location while the app is active? Your location never leaves your device.” Note that you’ll need to make a new IPA as these strings are set at build-time.

I hope this makes sense, and please feel free to ask if you have any more questions. Again, many apologies for the inconvenience – we hope we can help you get this resolved ASAP!

Hello, thanks for looking into this for me. If I gave apple a copy of that info.plist and asked them if that was what they had, would that help? Is there anyway for me to see my own info.plist after the app is built, as in exact it from the .ipa? or to check it in the same way Apple is? I don’t really want to give fake reasons why the user is being asked permissions, especially as they might not use the app if it is asking for them. What would I say for the camera permission!?

Actually, since I wrote my last comment, the app store have put my app live, without any response. I told them we were not requesting the permissions. I have just installed the app from the store and indeed, it did not ask me for permissions. So I guess there is something weird in the way apple review the apps, who knows? it’s a dark art! thanks for your help anyway.

Interesting. Well, I’m (and we’re) glad your app finally made it into the store. Apple review has always been a tricky best. Let us know if you encounter any other issues and thanks for your patience with this!

Cheers!

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.