Remove a setting from the settings screen in iOS on app upgrade - ios

My app initially used a feature that required microphone access. So the settings screen used to show the toggle switch for toggling that permission on or off. In the new version we no longer need that feature. So I removed the entry for microphone from the Root.plist in the Settings.bundle. This works for new installations. But for a user updating the app, the settings still shows the microphone permission. Is there any way to remove that entry ?

I believe you need to delete the NSMicrophoneUsageDescription key from your info.plist file. I guess that as long as iOS sees that key, it will render the corresponding entry in your app's settings.
You can read more about what this key does here.

Related

Xamarin iOS project Info.plist issues during submission on App Store

I am developing project which use the following permissions in Info.plist: NSCameraUsageDescription,
NSPhotoLibraryUsageDescription, NSMicrophoneUsageDescription, NSPhotoLibraryAddUsageDescription, NSCalendarsUsageDescription. App can browse photos library or take a picture. After the deployment process for submission on App Store I get the info:
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.
The app's Info.plist file should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data.
In my app I don't use or ask user for location permission. Moreover I use the NuGet packages: Xamarin.Essentials, Forms, Plugin.Permissions. How can I workaround this issue with location permissions to avoid placing this ?
There is nothing that you can do to workaround the problem aside from removing plugins.
And there are no reasons to do something like that as the end-user won't see any difference unless you ask for the location in the app's code. Info.plist is not visible to the end user in any way including through the app listing.

Camera and Photos permission - iOS [duplicate]

In my iOS app I am accessing the user's photo gallery. The first time the user does this, it asks them for permission. Some of my users have reported getting a crash this first time due to the permission request, but it works fine on subsequent tries.
To be able to test this on my own, I need to be able remove the permission from my iPad and have it prompt again. Is there a way to do this either through the iPad/iPhone itself or through code?
Run the Settings app. Go to General, then Reset. Tap on Reset Location & Privacy. This will reset all of your location and privacy settings, not just for your test app. But you are doing this on a development device so that should be OK. This works in the Simulator too.
In iOS 7+, you can go into Settings > Privacy > Photos and explicitly enable or disable access for individual apps.
This is much better than resetting your entire device privacy settings!
Another way is to temporary change Bundle Identifier (CFBundleIdentifier) in Info.plist.
System will treat such app as a new separate app and will display "would like to access your Photos" alert.
Don't forget to revert CFBundleIdentifier after you end testing.

how to re upload our app to appstore

Last week i have launched my app to app store after two days i got a metadata rejection from the review due to providing invalid demo account later i provided my valid account after again they came up with other issues that is
Hello,
Thank you for your response and for providing this information.
However, upon further review we noticed that your app does not comply with the following guideline:
Guideline 5.1.5 - Legal - Privacy - Location Services
Your app uses background location services but does not clarify the purpose of its use in the location modal alert as required in the iOS Human Interface Guidelines.
Please see attached screenshots for details.
Next Steps
To resolve this issue, please revise the NSLocationAlwaysUsageDescription value in the Info.plist to specify the intended purpose of using the user's location while the app is in the background.
Resources
For additional information and instructions on configuring and presenting an alert, please review the Requesting Permission section of the iOS Human Interface Guidelines and the Information Property List Key Reference.
We look forward to reviewing your revised app.
Best regards,
App Store Review
But still my app store status is showing metadata rejected.Now what should i do whether i need to update my proper reasons in plist and rebuild to launch my app or else any other steps to follow????
Hi i have also faced the same issue even after adding NSLocationAlwaysUsageDescription with description in info.plist My App has rejected by apple.If we use locationManager.requestAlwaysAuthorization() you need to explain how you are going to use user location. But in my situation While initializing LocationManager i have changed locationManager.requestAlwaysAuthorization() to locationManager.requestWhenInUseAuthorization() Hope it will work for you too.
You need to add the proper reason of why you need the location service in the App.
You can set it by following way
Steps
Go to info.plist file.
Add your reason of accessing location service under key "Privacy -
Location Always Usage Description"
You will see the plist like this after adding the location service
It seems like your application is rejected because of the insufficient justification of using the location services in the background.You should add description for alert why your application is using the location in background in NSLocationAlwaysUsageDescription in info.plist file of your project. As well as you should mention it in your application description as well that why your application is using location services in background.(i.e for geo-fence or track user location.) Also mention that "continuous use of location may drain the battery dramatically" in application description.
By these steps you will be able to successfully submit your application to the apple store.
Add NSLocationAlwaysUsageDescription with description in info.plist
Go to your Project settings and increment the build number.
Upload a new build and submit your app again.
Update your info.plist file and add NSLocationAlwaysUsageDescription key with description.
Change (Increase) your build number (highlighted in attached image)
Re-upload your app to Itunes Store and submit for review.
You Must upload new Binary because your change is in your app's Info.plist file. See Next Step in your rejection message.
After add valid reason in info.plist file. Make app build with higher version.
Go to AppStore and Click on + button With increment app version. Add new Binary after deleting old One. and Upload for Review.

Resetting iOS 7 microphone access permission

How do I reset the microphone access permission so that the app will ask for microphone access permission again as if it were downloaded fresh from the App Store?
Reinstalling the app does not accomplish what I need. When I set the permissions in Settings->Privacy->Microphone, I can only turn permissions on or off. I need to reset it so that it asks for permissions again.
You can RESET your privacy settings in iOS Settings.
Settings > General > Reset > Reset Location and Privacy.
NOTE: Privacy settings for all apps will be reset.
At least starting from iOs 7.1.1 there are switches to change access permission for every single app.
Look in: Settings->Privacy, select the kind of subsytem of your interest ( eg: microphone ), you will see your app in the list. Change the value of the selector according to your needs.
Have a nice day, Stefano
If you change your bundle identifier, that'll also reset the permissions for your app.
Permissions for an uninstalled app are reset after a day.
So, if it is not urgent, you can wait for it reset. I know this is not an ideal solution but it is app specific
Following on from Stefano's post - if you'd like to direct your user directly to the microphone settings then you can use:
let app = UIApplication.sharedApplication()
app.openURL(NSURL(string:"prefs:root=Privacy&path=MICROPHONE")!)
(at least on iOS 9 - if the Settings app structure changes, then the link will likely need to change)

About Info.plist file and Xcode 5

I have some questions regarding the information I should include in my project's Info.plist file before submitting the app:
A) About CFBundleIcons: I see this key when I open the file in Xcode as source code and the xml format is displayed but, when I open it as property list, I only see an Icon files (iOS 5) entry, is that correct? On the other hand, I've changed the app icons I firstly had in the General tab of the target settings, and the Info.plist file keeps listing the old app icons as well, and the new icons I added do not have the .png extension in their name... should I handle this information manually, or did I something wrong when I changed the icons in the target's settings? Should the names include the png extension? Should I list all versions of an icon (standard and #2x), or just the name for the standard is enough?
B) Regarding UIRequiresPersistentWifi key, Apple's docs say that
Include this key if your app requires a Wi-Fi connection
I'm not sure if I have to include this key: my app performs network operations but they could be done via WWAN, not only via Wi-Fi. And not all my app's features need network connection to be performed.
C) About UIRequiredDeviceCapabilities key. I have in turn some questions here: Apple says that
The value of the UIRequiredDeviceCapabilitieskey is either an array or a dictionary that contains additional keys identifying features your app requires (or specifically prohibits).
What do they mean when they say "features your app requires": those features which the app won't work at all without them, or all those features that your app can use? For example: my app includes an option for listening the device's location. It is an optional functionality, users can enable and disable it. I check [CLLocationManager locationServicesEnabled] when the user enables the option. I've no set the location-services value in the plist file and the app has been tested and the feature works, and the compiler has never complained. Should I include the value if I want to submit the app?
Something similar happens with another capabilities, for example microphone and still-camera. I use UIImagePickerController at some point of the app, as well as the microphone for speech recognition, but that are also optional functions of the app that the user has to select, they don't affect its overall operation. And I neither have included such values in the plist yet and they are working...
Thanks in advance
A: If you want to publish iPhone app only you need provide the 2 icon's(#1x, #2x),Now I think #1x is not for necessary, if you want to publish Both iPad & iPhone, you may need to provide 4 icon. But if you dont care about the quality 1 icon is OK.
B:This line UIRequiresPersistentWifi is not necessary.
C:Same as B) This line UIRequiresPersistentWifi is not necessary. if you have more require from iOS system.

Resources