Reputation: 13357
If locationServicesEnabled return false, I'm prompting the user to enable their Location Services. The following URL works for 10.0+, redirecting the user to the Settings app and directly to the Location Services screen:
URL(string: "App-Prefs:root=Privacy&path=LOCATION")
However this doesn't work in iOS 11. It opens the Settings app, but doesn't drill down to the Location Services. Anyone knows what's the new URL for iOS 11+?
Upvotes: 12
Views: 11016
Reputation: 589
In iOS 15 this wasn't working for me, as it was just opening the general settings page, but based on shivi_shub answer and his comment I tried the following:
if let bundleId = Bundle.main.bundleIdentifier,
let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION_SERVICES/\(bundleId)")
{
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
And it brought me to the location settings, which at least is a couple steps closer to the settings page I really want to show.
So I guess we could just do:
if let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION_SERVICES") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Upvotes: 3
Reputation: 167
Apple published a list of URLs which they explicitly allow at this link. Unfortunately if you use other URLs (such as the one you are trying to use) this can get your app rejected from the App Store.
Short answer: You cannot do what you are trying to do without breaking the App Store rules.
Upvotes: 5
Reputation: 1058
Use this-
UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)
Using App-prefs may lead to the rejection of the app on app store.
Or you can try this also-
if let bundleId = Bundle.main.bundleIdentifier,
let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION/\(bundleId)") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Upvotes: 2