I recently uploaded a new version of my app to itunes connect. My app got rejected with this note
Your app uses the \"prefs:root=\" non-public URL s
We also faced the same issue and resolved it by this:
if let url = URL(string:UIApplication.openSettingsURLString)
{
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
I had the same problem and I resolved it as following:-
Step 1:- Search for the Prefs:root in your app then you will find something as follows:-
if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION") {
// If general location settings are disabled then open general location settings
UIApplication.shared.openURL(url)
}
Step 2:- Change the above code section with the following one:-
if let url = URL(string:UIApplicationOpenSettingsURLString)
{
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Now rebuild your app and resubmit to the App Store with no worries :)
I faced the same rejection form Apple and to open app settings i was using the below code and it's not accepted on iOS11.
let url = URL(string : "prefs:root=")
if UIApplication.shared.canOpenURL(url!) {
UIApplication.shared.openURL(url!)
}
So, to open Settings, I used the below code and App was approved.
guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
})
}
else {
UIApplication.shared.openURL(settingsUrl)
}
}
At the end the one with the issues was AmazonFling that was not listed on the pods because was installed using another method. See the forums post about it: https://forums.developer.amazon.com/questions/167282/apple-app-rejected-because-of-non-public-apis-refe.html
AmazonFling does not have update yet (as of Apr 27, 2018) so I removed it until they update it.
Fixed in AmazonFling 1.3.2, released on the same day. See https://developer.amazon.com/fr/docs/fling/release-notes.html
I faced the same issue. "prefs:root=" url scheme is not accepted by iOS 11. Using the UIApplicationOpenSettingsURLString value fixed it.
Reference Image
if you need to find with the 'prefs:root is:
Go to your project's target -> then Info -> then URL Types, there you should find URL Schemes with value like 'prefs' or 'prefs:root'