2010-11-03 66 views
9

从我用这样的代码明白:如何在用户按下按钮时打开“设置”应用程序?

NSURL* appUrl = [NSURL URLWithString: @"URL"]; 
[[UIApplication sharedApplication] openURL:appUrl]; 

我可以打开地图,YouTube上,Safari浏览器,邮件,iTunes和App Store中,当用户说按下按钮。

但我想知道是否可以使用此方法打开设置应用程序。

基本上,第一次用户打开我的应用程序我想要一个UIAlertView弹出来让用户知道他们可以更改特定的设置,如果他们想要的话,或者他们按下确定或他们按设置将他们带到设置应用程序。

我知道Apple在某些情况下会这样做,但开发人员可以这么做吗?

+0

的可能重复[从另一个应用程序打开设置应用程序](http://stackoverflow.com/questions/5655674/opening-the-settings-app-from-another-app) – Flexo 2011-10-15 21:08:21

回答

16

按@ bnduati的回答,在iOS中8,你可以使用下面的代码在设置应用程序来打开应用程序的设置:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; 

老回答:

从iOS 5.1到iOS 7 ,无法从其他应用程序打开设置应用程序。

您可能想要调查this framework以提供应用内设置。

有相当讨论这个主题的其他几个问题:

iPhone - how to put Settings bundle seen through System Settings App into your own App?

Launch iPhone setting screen from Application?

How to send a user to the main iPhone Settings screen from within your iPhone App

+0

真棒谢谢!InAppSettingsKit在应用程序设置中很适合使用 – cgossain 2010-11-03 23:48:31

+0

这可以在iOS 8+中使用'UIApplicationOpenSettingsURLString'。请参阅下面的@ bnduati的答案:http://stackoverflow.com/a/25311388/1148702 – 2014-12-22 18:20:22

3

我不知道这是否可行,但有一个问题是用户需要导航回您的应用程序。您可以改为使用您自己的首选项视图,该视图可以使用NSUserDefaults将其写入与首选项应用程序将使用的文件相同的文件。

[[NSUserDefaults standardUserDefaults] setObject:value forKey:key];

[[NSUserDefaults standardUserDefaults] stringForKey:key]

6

您可以在iOS 5.0使用及更高版本:

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

请粘贴文档中的链接。 – 2011-11-11 10:28:39

+11

这在iOS 5.1 – RPM 2012-04-03 21:25:33

+0

中被禁用...并且在iOS 8中通过'UIApplicationOpenSettingsURLString'启用 – 2014-12-22 18:24:07

9

在iOS系统中8,以后你可以将用户发送到您的应用程序的设置以下列方式:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; 
1

斯威夫特语法:

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!) 
0

斯威夫特3

private func showAlertPrivacy() { 
    let alertController = UIAlertController(title: nil, message: "messagePrivacy", preferredStyle: .alert) 
    let alertNo = UIAlertAction(title: "No", style: .default) { (_) in 

    } 
    alertController.addAction(alertNo) 

    let alertSetting = UIAlertAction(title: "Settings", style: .default) { (_) in 

     UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!, options: [:], completionHandler: { (_) in 

     }) 
    } 
    alertController.addAction(alertSetting) 

    present(alertController, animated: true) { 

    } 
} 
相关问题