Opening the Settings app from another app
Solution 1
As mentioned by Karan Dua this is now possible in iOS8 using UIApplicationOpenSettingsURLString
see Apple's Documentation.
Example:
Swift 4.2
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
In Swift 3:
UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)
In Swift 2:
UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)
In Objective-C
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Prior to iOS 8:
You can not. As you said this has been covered many times and that pop up asking you to turn on location services is supplied by Apple and not by the App itself. That is why it is able to the open the settings application.
Here are a few related questions & articles:
is it possible to open Settings App using openURL?
Programmatically opening the settings app (iPhone)
How can I open the Settings app when the user presses a button?
iPhone: Opening Application Preferences Panel From App
Open UIPickerView by clicking on an entry in the app's preferences - How to?
iOS: You’re Doing Settings Wrong
Solution 2
From @Yatheeshaless's answer:
You can open settings app programmatically in iOS8, but not in earlier versions of iOS.
Swift:
UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)
Swift 4:
if let url = NSURL(string: UIApplicationOpenSettingsURLString) as URL? {
UIApplication.shared.openURL(url)
}
Swift 4.2 (BETA):
if let url = NSURL(string: UIApplication.openSettingsURLString) as URL? {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Objective-C:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Solution 3
YES!! you can launch Device Settings screen, I have tested on iOS 9.2
Step 1. we need to add URL schemes
Go to Project settings --> Info --> URL Types --> Add New URL Schemes
Step 2. Launch Settings programmatically Thanks to @davidcann
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
Also we can launch sub-screens like Music, Location etc. as well by just using proper name
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=MUSIC"]];
See this full name list here shared by Henri Normak
Update:
As per the comment everyone wants to know what happens after this change to my application submission status?
So YES!! I got successful update submission and application is available on store without any complain.
Just to confirm, I Just downloaded this morning and disabled Location services, and then started the app, which asked me for location permission and then my alert popup was there to send me on settings -> location services page --> Enabled --> That's it!!
![NOTICE: Your app might be rejected ... even if it's approved it can be rejected in future version if you use this method...]4
Solution 4
Seems like you can use the prefs:<area>
URL to open the settings and go to specific areas. Apple could change these and break your app so always check if you can open them first.
From this article they have listed some of them for iOS 13.1:
Settings URLs
iCloud
- iCloud:
prefs:root=CASTLE
- iCloud Backup:
prefs:root=CASTLE&path=BACKUP
Wireless Radios
- Wi-Fi:
prefs:root=WIFI
- Bluetooth:
prefs:root=Bluetooth
- Cellular:
prefs:root=MOBILE_DATA_SETTINGS_ID
Personal Hotspot
- Personal Hotspot:
prefs:root=INTERNET_TETHERING
- Personal Hotspot ⇾ Family Sharing:
prefs:root=INTERNET_TETHERING&path=Family%20Sharing
- Personal Hotspot ⇾ Wi-Fi Password:
prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password
VPN
- VPN:
prefs:root=General&path=VPN
Notifications
- Notifications:
prefs:root=NOTIFICATIONS_ID
- Notifications ⇾ Siri Suggestions:
prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions
Sounds
- Sounds:
prefs:root=Sounds
- Ringtone:
prefs:root=Sounds&path=Ringtone
Do Not Disturb
- Do Not Disturb:
prefs:root=DO_NOT_DISTURB
- Do Not Disturb ⇾ Allow Calls From:
prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From
Screen Time
- Screen Time:
prefs:root=SCREEN_TIME
- Screen Time ⇾ Downtime:
prefs:root=SCREEN_TIME&path=DOWNTIME
- Screen Time ⇾ App Limits:
prefs:root=SCREEN_TIME&path=APP_LIMITS
- Screen Time ⇾ Always Allowed:
prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED
General
- General:
prefs:root=General
- General ⇾ About:
prefs:root=General&path=About
- General ⇾ Software Update:
prefs:root=General&path=SOFTWARE_UPDATE_LINK
- General ⇾ CarPlay:
prefs:root=General&path=CARPLAY
- General ⇾ Background App Refresh:
prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
- General ⇾ Multitasking (iPad-only):
prefs:root=General&path=MULTITASKING
- General ⇾ Date & Time:
prefs:root=General&path=DATE_AND_TIME
- General ⇾ Keyboard:
prefs:root=General&path=Keyboard
- General ⇾ Keyboard ⇾ Keyboards:
prefs:root=General&path=Keyboard/KEYBOARDS
- General ⇾ Keyboard ⇾ Hardware Keyboard:
prefs:root=General&path=Keyboard/Hardware%20Keyboard
- General ⇾ Keyboard ⇾ Text Replacement:
prefs:root=General&path=Keyboard/USER_DICTIONARY
- General ⇾ Keyboard ⇾ One Handed Keyboard:
prefs:root=General&path=Keyboard/ReachableKeyboard
- General ⇾ Language & Region:
prefs:root=General&path=INTERNATIONAL
- General ⇾ Dictionary:
prefs:root=General&path=DICTIONARY
- General ⇾ Profiles:
prefs:root=General&path=ManagedConfigurationList
- General ⇾ Reset:
prefs:root=General&path=Reset
Control Center
- Control Center:
prefs:root=ControlCenter
- Control Center ⇾ Customize Controls:
prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS
Display
- Display:
prefs:root=DISPLAY
- Display ⇾ Auto Lock:
prefs:root=DISPLAY&path=AUTOLOCK
- Display ⇾ Text Size:
prefs:root=DISPLAY&path=TEXT_SIZE
Accessibility
- Accessibility:
prefs:root=ACCESSIBILITY
Wallpaper
- Wallpaper:
prefs:root=Wallpaper
Siri
- Siri:
prefs:root=SIRI
Apple Pencil
- Apple Pencil (iPad-only):
prefs:root=Pencil
Face ID
- Face ID:
prefs:root=PASSCODE
Emergency SOS
- Emergency SOS:
prefs:root=EMERGENCY_SOS
Battery
- Battery:
prefs:root=BATTERY_USAGE
- Battery ⇾ Battery Health (iPhone-only):
prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH
Privacy
- Privacy:
prefs:root=Privacy
- Privacy ⇾ Location Services:
prefs:root=Privacy&path=LOCATION
- Privacy ⇾ Contacts:
prefs:root=Privacy&path=CONTACTS
- Privacy ⇾ Calendars:
prefs:root=Privacy&path=CALENDARS
- Privacy ⇾ Reminders:
prefs:root=Privacy&path=REMINDERS
- Privacy ⇾ Photos:
prefs:root=Privacy&path=PHOTOS
- Privacy ⇾ Microphone:
prefs:root=Privacy&path=MICROPHONE
- Privacy ⇾ Speech Recognition:
prefs:root=Privacy&path=SPEECH_RECOGNITION
- Privacy ⇾ Camera:
prefs:root=Privacy&path=CAMERA
- Privacy ⇾ Motion:
prefs:root=Privacy&path=MOTION\
App Store
- App Store:
prefs:root=STORE
- App Store ⇾ App Downloads:
prefs:root=STORE&path=App%20Downloads
- App Store ⇾ Video Autoplay:
prefs:root=STORE&path=Video%20Autoplay
Wallet
- Wallet:
prefs:root=PASSBOOK
Passwords & Accounts
- Passwords & Accounts:
prefs:root=ACCOUNTS_AND_PASSWORDS
- Passwords & Accounts ⇾ Fetch New Data:
prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
- Passwords & Accounts ⇾ Add Account:
prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT
- Mail:
prefs:root=MAIL
- Mail ⇾ Preview:
prefs:root=MAIL&path=Preview
- Mail ⇾ Swipe Options:
prefs:root=MAIL&path=Swipe%20Options
- Mail ⇾ Notifications:
prefs:root=MAIL&path=NOTIFICATIONS
- Mail ⇾ Blocked:
prefs:root=MAIL&path=Blocked
- Mail ⇾ Muted Thread Action:
prefs:root=MAIL&path=Muted%20Thread%20Action
- Mail ⇾ Blocked Sender Options:
prefs:root=MAIL&path=Blocked%20Sender%20Options
- Mail ⇾ Mark Addresses:
prefs:root=MAIL&path=Mark%20Addresses
- Mail ⇾ Increase Quote Level:
prefs:root=MAIL&path=Increase%20Quote%20Level
- Mail ⇾ Include Attachments with Replies:
prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
- Mail ⇾ Signature:
prefs:root=MAIL&path=Signature
- Mail ⇾ Default Account:
prefs:root=MAIL&path=Default%20Account
Contacts
- Contacts:
prefs:root=CONTACTS
Calendar
- Calendar:
prefs:root=CALENDAR
- Calendar ⇾ Alternate Calendars:
prefs:root=CALENDAR&path=Alternate%20Calendars
- Calendar ⇾ Sync:
prefs:root=CALENDAR&path=Sync
- Calendar ⇾ Default Alert Times:
prefs:root=CALENDAR&path=Default%20Alert%20Times
- Calendar ⇾ Default Calendar:
prefs:root=CALENDAR&path=Default%20Calendar
Notes
- Notes:
prefs:root=NOTES
- Notes ⇾ Default Account:
prefs:root=NOTES&path=Default%20Account
- Notes ⇾ Password:
prefs:root=NOTES&path=Password
- Notes ⇾ Sort Notes By:
prefs:root=NOTES&path=Sort%20Notes%20By
- Notes ⇾ New Notes Start With:
prefs:root=NOTES&path=New%20Notes%20Start%20With
- Notes ⇾ Sort Checked Items:
prefs:root=NOTES&path=Sort%20Checked%20Items
- Notes ⇾ Lines & Grids:
prefs:root=NOTES&path=Lines%20%26%20Grids
- Notes ⇾ Access Notes from Lock Screen:
prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen
Reminders
- Reminders:
prefs:root=REMINDERS
- Reminders ⇾ Default List:
prefs:root=REMINDERS&path=DEFAULT_LIST
Voice Memos
- Voice Memos:
prefs:root=VOICE_MEMOS
Phone
- Phone:
prefs:root=Phone
Messages
- Messages:
prefs:root=MESSAGES
FaceTime
- FaceTime:
prefs:root=FACETIME
Maps
- Maps:
prefs:root=MAPS
- Maps ⇾ Driving & Navigation:
prefs:root=MAPS&path=Driving%20%26%20Navigation
- Maps ⇾ Transit:
prefs:root=MAPS&path=Transit
Compass
- Compass:
prefs:root=COMPASS
Measure
- Measure:
prefs:root=MEASURE
Safari
- Safari:
prefs:root=SAFARI
- Safari ⇾ Content Blockers:
prefs:root=SAFARI&path=Content%20Blockers
- Safari ⇾ Downloads:
prefs:root=SAFARI&path=DOWNLOADS
- Safari ⇾ Close Tabs:
prefs:root=SAFARI&path=Close%20Tabs
- Safari ⇾ Clear History and Data:
prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
- Safari ⇾ Page Zoom:
prefs:root=SAFARI&path=Page%20Zoom
- Safari ⇾ Request Desktop Website:
prefs:root=SAFARI&path=Request%20Desktop%20Website
- Safari ⇾ Reader:
prefs:root=SAFARI&path=Reader
- Safari ⇾ Camera:
prefs:root=SAFARI&path=Camera
- Safari ⇾ Microphone:
prefs:root=SAFARI&path=Microphone
- Safari ⇾ Location:
prefs:root=SAFARI&path=Location
- Safari ⇾ Advanced:
prefs:root=SAFARI&path=ADVANCED
News
- News:
prefs:root=NEWS
Health
- Health:
prefs:root=HEALTH
Shortcuts
- Shortcuts:
prefs:root=SHORTCUTS
Music
- Music:
prefs:root=MUSIC
- Music ⇾ Cellular Data:
prefs:root=MUSIC&path=com.apple.Music:CellularData
- Music ⇾ Optimize Storage:
prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
- Music ⇾ EQ:
prefs:root=MUSIC&path=com.apple.Music:EQ
- Music ⇾ Volume Limit:
prefs:root=MUSIC&path=com.apple.Music:VolumeLimit
TV
- Settings ⇾ TV:
prefs:root=TVAPP
Photos
- Photos:
prefs:root=Photos
Camera
- Camera:
prefs:root=CAMERA
- Camera ⇾ Record Video:
prefs:root=CAMERA&path=Record%20Video
- Camera ⇾ Record Slo-mo:
prefs:root=CAMERA&path=Record%20Slo-mo
Books
- Books:
prefs:root=IBOOKS
Game Center
- Game Center:
prefs:root=GAMECENTER
Solution 5
You can use this on iOS 5.0 and later: This no longer works.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
Related videos on Youtube
FelipeDev.-
Updated on November 09, 2021Comments
-
FelipeDev.- over 2 years
Okay, I know that there are many question about it, but they are all from many time ago.
So. I know that it is possible because the Map app does it.
In the Map app if I turn off the localization for this app, it send me a message, and if I press okay, the "Settings App" will be open. And my question is, how is this possible? How can I open the "Setting app" from my own app?
Basically I need to do the same thing, if the user turn off the location for my app, then I'll show him a message saying something that will open the "Setting app"
-
Yatheesha almost 10 yearsCheck this one stackoverflow.com/questions/377102/…
-
Karan Dua over 9 yearsYou can open settings app programmatically in iOS8(but not in lower versions of iOS).code below in answers.
-
-
Vincent Gable over 12 yearsIf you need a more authoritative answer, you might try asking on the Apple Developer forums <developer.apple.com/devforums> or filing a bug at <developer.apple.com/bugreporter> — if it's a known issue it should come back as "behaves correctly" or a duplicate of the original bug.
-
Mark Granoff over 12 yearsSon of a gun, that actually works! I can't find any documentation reference to this. Do you have one? What the behavior of this code under iOS4? Other than failure, what happens? Nothing?
-
davidcann over 12 years@MarkGranoff No, it seems to be technically undocumented, but it's not as bad as a normal undocumented API, since it's just a URL Scheme. You can check for it with canOpenURL: first. Also, there's a thread about it here: devforums.apple.com/message/543818
-
Mark Granoff over 12 yearsRight! Excellent points. That DevForum thread suggested that undocumented == private API, which means: don't use it (until it's documented. :-)
-
progrmr over 12 yearsYou can get to different areas in settings according to this article. For example this URL will take you to Bluetooth settings
prefs:root=General&path=Bluetooth
-
Guillaume over 12 yearsI got an application rejected for using private API because I was opening the url: @"prefs:root=Brightness". Usually, un-documented means private.
-
Don Wilson almost 12 yearsApple has stated that this wasn't a public API, and is no longer supported. There is a bug filed on this issue, number 11253669.
-
Ants over 11 yearsI just saw that this works in Strava app. Turn off Bluetooth & then turn it on in app. Then it asks to got to settings app & it goes directly to Bluetooth settings. This is for iOS5.1. Is there a way to find out what scheme they are using?
-
Admin about 11 years
-
Joe about 11 yearsI agree if you are willing to bend/break the rules.
-
Andrei over 10 years@Ants see stackoverflow.com/questions/15682164/…
-
wjl over 9 yearsThis appears to open your app's section of the Settings app. Users will have to hit Back a few times to see the main screen of Settings.
-
Paito over 9 yearsSmall correction..
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
-
Pavan Kotesh over 9 years@Paito The above line is directing to app private settings. Is there any way to direct to privacy section of the device settings? Please comment if you know. This redirection is possible, as I found it in maps app where it directs to location settings in privacy section.
-
Paito over 9 yearsNot sure if it's possible, Apple apps often do things that we can't by using private APIs, the Google Maps app just goes to the App Settings not Location Services.
-
LightningStryk over 9 yearsThis is now possible in iOS 8 using [NSURL URLWithString:UIApplicationOpenSettingsURLString]
-
vbezhenar over 9 yearsSmall Swift correction: UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!)
-
Tejas K about 8 years@PavanKotesh- Yes but the app settings will have what you need permission for, in my case i needed access to contacts, which do appear in app settings with above code.
-
Flo about 8 yearsThanks, works for me, on iOS 6 and 7, too. Did you try to get it through Apple's review process yet?
-
swiftBoy about 8 years@Flo I will let you know, because presently I have pushed for beta testing.
-
LorenzOliveto about 8 yearsHey @RDC, have you got any news about the review of your app?
-
Hlung about 8 years@RDC did your app pass the App Review process?
-
EricWasTaken about 8 yearsiOS 9.3. Worked like a charm. I even see "Back to [my app name]" inside the settings app. Surely, this is supported because I see plenty of other apps that do this kind of thing!
-
GuiSoySauce almost 8 yearsI am using that and it failed the submission to app store? Anyone else had the same issue or a work around it?
-
msg almost 8 years@RDC Did Apple approved the build with "prefs" private APIs?
-
swiftBoy almost 8 years@msg YES!! The application has been approved and available on store.
-
KoreanXcodeWorker almost 8 yearsFrom the feedbacks in 2012, using the code 'prefs:' to be rejected, but from this feedback as now in 2016, he says 'approved', Then, hope he be right.
-
Khadija Daruwala over 7 years@Joe This solution is not working for iOS 10 . I am working on Xcode 8, swift 3. Any alternate solution please?
-
Mark Peters over 7 yearsI tried the iOS 10.x solution, and it didn't work for me - nothing happens.
-
Roohul Poolak over 7 years@MarkPeters, did you figure out a way yet? It could be of great help. Thanks.
-
Mark Peters over 7 yearsNo, I haven't. I still don't know if it is an iOS bug or if Apple just removed the feature.
-
sohil over 7 years@joe i have worked in iOS 10. its not Works. if any other solution please update your answer.
-
Trident over 7 yearsI think, they still work with Extensions. Ex app is
Magic Launcher
in Appstore. -
Trident over 7 yearsI think, they still work with Extensions. Ex app is
Magic Launcher
in Appstore. -
Trident over 7 yearsI think, they still work with Extensions. Ex app is
Magic Launcher
in Appstore. -
GMHSJ over 7 yearsin swift 3 - UIApplication.shared.openURL(URL(string:UIApplicationOpenSettingsURLString)!)
-
Drico about 7 yearsOn iOS 10, the new url is not "prefs:root=...." but "App-Prefs:root=...".
-
user3804063 almost 7 yearshow to get to notification screen? because if let url = URL(string: "App-Prefs:root=NOTIFICATIONS_ID&path=io.artup.artup") { if #available(iOS 10.0, *) { UIApplication.shared.open(url, completionHandler: .none) } } but i went to notification in iPhone 6 not in iPhone 7 plus?
-
Bersaelor over 5 yearsThis will get your app rejected. Just had it happen to me.
-
Bersaelor over 5 yearsThis will get your app rejected. They put it under use of private API.
-
Nick Kirsten over 5 yearsBe wary of using this method. I used it and a few months later my app got rejected with the following message from Apple: Your app uses the "prefs:root=" non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change. Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.
-
Praveen Sharma over 5 yearsIs that so, But this line of code will directly take you to the desired location
-
Bersaelor over 5 yearsYes it will get you there. I'm not saying it doesn't work, I'm just pointing out that it will get you rejected during app review. "prefs:root" is a private url scheme according to what the review team told us. (You might get lucky and they don't notice for a while, we had the feature in for a while and passed several reviews before the reviewer noticed it)
-
Praveen Sharma over 5 yearsThanks for the information, I would try something else, But right now i am stucked in VPN connectivity, Finding a solution for this.
-
Kiryl Bielašeŭski over 5 yearsI have got rejected my app, using this "App-Prefs:root"
-
CodeBrew over 5 yearsJust emphasize what others mentioned here, don't use this method, it'll get your app rejected. Repeatedly submitting app with such will get your developer account closed.
-
Mihir Mehta about 5 yearsYour app might be rejected ... even if it's approved it can be rejected in future version if you use this method...
-
ChesterK2 over 3 years@Nick Kirsten did you mean this answer or the answer bellow ?, I can't see any "prefs:root" phrase in the current answer. Also, what did you do instead ?
-
tp2376 about 3 yearsthis is not working for iOS 14 ..always showing settings instead of path mentioned. any workaround ?
-
Tejas Patel almost 3 yearsyes, i have also same issue with iOS 14 but in my case it is resolved when i remove root prefix. for example instead of "prefs:root=Privacy&path=LOCATION" i have ued "App-prefs:Privacy&path=LOCATION" and it works in iOS 14.
-
multitudes almost 3 years
openSettingsURLString
is a public API, see documentation: developer.apple.com/documentation/uikit/uiapplication/…