Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access Settings app in iOS

Is there an opportinity to show up the settings.app in iOS by clicking on a button? It should work with iOS 5.1 so the "prefs:root..." url is no option.

Do you have an idea how to solve this?

like image 794
MTSlive Avatar asked Mar 12 '12 09:03

MTSlive


3 Answers

I know the question is about 5.1 specifically, but in case anyone else is interested:

As of iOS 8, it is possible to take a user from your app directly into the Settings app. They will be deep linked into your app's specific Settings page, but they can back out into the top level Settings screen.

UPDATE:

Thanks to Pavel's comment, I simplified the if statement and avoided the EXC_BAD_ACCESS on iOS 7.

UPDATE 2:

If your deployment target is set to 8.0 or above, Xcode 6.3 will give you the following warning:

Comparison of address of 'UIApplicationOpenSettingsURLString' not equal to a null pointer is always true

This is because the feature was available starting in 8.0, so this pointer will never be NULL. If your deployment target is 8.0+, just remove the if statement below.

if (&UIApplicationOpenSettingsURLString != NULL) {
    NSURL *appSettings = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    [[UIApplication sharedApplication] openURL:appSettings];
} 
like image 188
djibouti33 Avatar answered Oct 22 '22 13:10

djibouti33


You are not able to do this on iOS 5.1. Most likely Apple removed that ability intentionally (you'll get "Please enter a valid URL", while Twitter can still call the Settings, though). Please refer to:

  • How to open preferences/settings with iOS 5.1?.
  • Apple Disables Home Screen Shortcuts For Settings Toggles In iOS 5.1
like image 42
Hailei Avatar answered Oct 22 '22 14:10

Hailei


On iOS 8 Apple gave us the possibility to go to the App Settings right from our app

you can apply this code:

- (IBAction)openSettings:(id)sender {
    BOOL canOpenSettings = (UIApplicationOpenSettingsURLString != NULL);
    if (canOpenSettings) {
        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
        [[UIApplication sharedApplication] openURL:url];
    }
}
like image 1
Banker Mittal Avatar answered Oct 22 '22 14:10

Banker Mittal