Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to open preferences/settings with iOS 5.1?

Looks like iOS 5.1 has broken the standard URL encoding for navigating a user to a Preference.

For example:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]]; 

Works in iOS 5.0 but not in iOS 5.1 (both device and simulator).

Has anyone found a way to replicate this functionality in iOS 5.1?

like image 951
James Jones Avatar asked Mar 09 '12 00:03

James Jones


People also ask

Where do I find iPhone preferences?

In the Settings app , you can search for iPhone settings you want to change, such as your passcode, notification sounds, and more. Tap Settings on the Home Screen (or in the App Library). Swipe down to reveal the search field, enter a term—“iCloud,” for example—then tap a setting.


2 Answers

It is little tricky , i get by the removing the subviews in *TWTWeetComposeViewController*, so it shows only alert when user is not loged in and by the clicking on setting button , we can open Setting page in my app.

     + (void)setAlertForSettingPage :(id)delegate      {      // Set up the built-in twitter composition view controller.         TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc] init];           // Create the completion handler block.         [tweetViewController setCompletionHandler:^(TWTweetComposeViewControllerResult result) {             [delegate dismissModalViewControllerAnimated:YES];         }];          // Present the tweet composition view controller modally.         [delegate presentModalViewController:tweetViewController animated:YES];         //tweetViewController.view.hidden = YES;         for (UIView *view in tweetViewController.view.subviews){             [view removeFromSuperview];         }       }  

here , delegate is your viewcontroller , if you are using this method inside your viewcontroller just use self instead of delegate.

EDIT: If you get any deprecated errors, use the following iOS6 compatible code instead:

- (void)setAlertForSettingPage {     // Set up the built-in twitter composition view controller.     SLComposeViewController *tweetViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];      // Present the tweet composition view controller modally.     [self presentViewController:tweetViewController animated:YES completion:nil];     for (UIView *view in tweetViewController.view.subviews){         [view removeFromSuperview];     } } 
like image 108
PJR Avatar answered Oct 04 '22 04:10

PJR


No I don’t know a way to replicate this functionality.

But what you can do is file a Radar requesting the restoration. Here is a radar requesting that the schemes be documented in the first place.

David Barnard has confirmed that iOS 5.1 breaks the settings apps URL schemes.


Update: iOS 8 has similar functionality for opening your app’s settings. Thanks Apple, Mike and Soto_iGhost.

The constant UIApplicationOpenSettingsURLString (UIApplication Documentation) will open the settings for your app and not, say Twitter’s settings. Not exactly the same functionality but much cleaner than before and now officially recognized.

This should be extra useful now that each app has a place in Settings for using privacy, cellular data, background app refresh and notifications.

like image 40
JoePasq Avatar answered Oct 04 '22 03:10

JoePasq