Open Twitter settings in Settings app

后端 未结 6 1722
野的像风
野的像风 2020-12-28 09:02

I know I can open the settings app in iOS 5 using

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@\"prefs://\"]];

but is

相关标签:
6条回答
  • 2020-12-28 09:22

    Try,

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]];    
    
    0 讨论(0)
  • 2020-12-28 09:22

    I found out that the root value is the key of the localized string found in the "Settings.strings" file of the Preferences.app. Here are some values that I tested to work:

    General: General
    iCloud: CASTLE
    Mail: ACCOUNT_SETTINGS
    Twitter: TWITTER
    Safari: Safari
    Music: MUSIC
    Video: VIDEO
    Photos: Photos
    Notes: NOTES
    Store: STORE

    However I can't figure out how to do this with my own app's settings.
    prefs:root=Apps&path=<CFBundleDisplayName> seems not to work.

    0 讨论(0)
  • 2020-12-28 09:22

    @Sahil

    Use

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

    to open straight to Location Services

    0 讨论(0)
  • 2020-12-28 09:29

    The awesome answers are already given but here is the complete snippet to open twitter settings in Settings using UIAlertController and Swift 3 :

     let alert = UIAlertController(title: "No Twitter Accounts", message: "There are no Twitter accounts configured. You can add or create a Twitter account in Settings.", preferredStyle: .alert)
            let firstAction = UIAlertAction(title: "Cancel", style: .default, handler: {(action: UIAlertAction) -> Void in
    
            })
            let secondAction = UIAlertAction(title: "Settings", style: .default, handler: {(action: UIAlertAction) -> Void in
    
                let url = URL(string:"App-Prefs:root=TWITTER")!
                if #available(iOS 10.0, *) {
                    UIApplication.shared.open(url, options: [:], completionHandler: nil)
                } else {
                    UIApplication.shared.openURL(url)
                }
            })
            alert.addAction(firstAction)
            alert.addAction(secondAction)
            self.present(alert, animated: true, completion: nil)
    
    0 讨论(0)
  • 2020-12-28 09:33

    Using the prefs:root scheme is not recommended. It will very likely be a breaking change with iOS update on the device and could lead to your app being rejected from the app store.

    https://gist.github.com/phynet/471089a51b8f940f0fb4

    0 讨论(0)
  • 2020-12-28 09:36

    Just show the composer. If no Twitter Account is available, it will show an AlertView to go to Settings

    var controller = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
    controller.setInitialText("My Post")
    self.presentViewController(controller, animated: true, completion: nil)
    
    0 讨论(0)
提交回复
热议问题