iOS启动设置 - >限制URL方案

ktu*_*ner 86 iphone settings url-scheme uiapplication ios

我最近发现了很棒的iOS5自定义设置URL方案,可以在这个很棒的网站上详细解释.

我发现这个工作,将用户从我的应用程序引导到Settings应用程序:

[[UIApplication sharedApplication] openURL:
       [NSURL URLWithString:@"prefs:root=General"]];
Run Code Online (Sandbox Code Playgroud)

但似乎无法通过参数直接路由到Restrictions路径path:

[[UIApplication sharedApplication] openURL:
   [NSURL URLWithString:@"prefs:root=General&path=Restrictions"]];
Run Code Online (Sandbox Code Playgroud)

有没有人找到这方面的文件或能够使这项工作?

任何见解将不胜感激.我正在尝试让用户启用应用内购买,而不是让用户手动点击限制(不是很明显).

Hen*_*mak 140

AS @Nix Wang的回答这不适用于IOS 10


警告:此方法不适用于运行iOS 5.1及更高版本的设备 - 请参阅下面的Hlung评论.

path组件可能具有与实际部分不同的名称,但您也可能无法直接从URL访问该部分.我找到了一个可能的URL列表,并且没有限制,可能它还没有找到.

"设置"应用中当前已知网址的列表:

  • 首选项:根=通用及路径=关于
  • 首选项:根=通用及路径= ACCESSIBILITY
  • 首选项:根= AIRPLANE_MODE
  • 首选项:根=通用及路径= AUTOLOCK
  • 首选项:根=通用及路径= USAGE/CELLULAR_USAGE
  • 首选项:根=亮度
  • 首选项:根=通用及路径=蓝牙
  • 首选项:根=通用及路径= DATE_AND_TIME
  • 首选项:根= FACETIME
  • 首选项:根=通用
  • 首选项:根=通用及路径=键盘
  • 首选项:根= CASTLE
  • 首选项:根=城堡&路径= STORAGE_AND_BACKUP
  • 首选项:根=通用及路径= INTERNATIONAL
  • 首选项:根= LOCATION_SERVICES
  • 首选项:根= ACCOUNT_SETTINGS
  • 首选项:根= MUSIC
  • 首选项:根=音乐与路径= EQ
  • 首选项:根=音乐与路径= VolumeLimit
  • 首选项:根=通用及路径=网络
  • 首选项:根= NIKE_PLUS_IPOD
  • 首选项:根= NOTES
  • 首选项:根= NOTIFICATIONS_ID
  • 首选项:根=电话
  • 首选项:根=照片
  • 首选项:根=通用及路径= ManagedConfigurationList
  • 首选项:根=通用及路径=复位
  • 首选项:根=声音和路径=铃声
  • 首选项:根= Safari浏览器
  • 首选项:根=通用及路径=助理
  • 首选项:根=声音
  • 首选项:根=通用及路径= SOFTWARE_UPDATE_LINK
  • 首选项:根= STORE
  • 首选项:根= TWITTER
  • 首选项:根=通用及路径= USAGE
  • 首选项:根= VIDEO
  • 首选项:根=通用及路径=网络/ VPN
  • 首选项:根=壁纸
  • 首选项:根= WIFI
  • 首选项:根= INTERNET_TETHERING

  • 只是一个善意的警告,http://www.idownloadblog.com/2011/11/29/iphone-5-1-disables-shortcuts/说**所有iOS设置的url方案都将在iOS5.1中删除**(所以网址如prefs:root = General&path = Network将不再有效)所以,请注意. (53认同)
  • 这些现在不适用于iOS10 :( (10认同)
  • 从iOS8开始,您可以使用url启动内置的Settings应用程序:`[NSURL URLWithString:UIApplicationOpenSettingsURLString] (5认同)
  • 它已经不再有效了,它在我的应用程序上工作了一段时间,但现在不再了. (4认同)
  • 它们没有被完全删除,您只需将这些URL链接放在UIAlertView的按钮中即可.因此,只需在UIAlertView中发出警告,即应用程序将转到后台,设置将打开然后确定,取消等. (3认同)
  • 请联系ios10的任何解决方案/替代方案. (2认同)

Jas*_*ore 47

从iOS8开始,您可以使用以下命令打开内置的"设置"应用:

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
   [[UIApplication sharedApplication] openURL:url];
}
Run Code Online (Sandbox Code Playgroud)

实际的URL字符串是@"app-settings:".我尝试将不同的部分附加到字符串("蓝牙","通用"等),但似乎只链接到主设置屏幕工作.如果您发现其他情况,请发布回复.

  • 那是因为特定的调用是设置启动URL.它会打开应用程序的自定义设置(如果存在).如果没有,它只是打开设置应用程序到主屏幕.https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/doc/constant_group/Settings_Launch_URL (10认同)
  • 有人知道Touch ID和Passcode的网址吗? (3认同)

小智 42

如果你将prefs URL方案添加到你的iOS应用程序,它将允许你使用我们在iOS 5中可以使用的所有方案.我已经在iOS 9上测试了它,但我认为它也适用于旧版本.

  • @conorgriffin对于你和其他任何想知道设置生活的人:目标| (申请)| 信息| 网址类型| + (9认同)
  • 现在似乎不适用于iOS 10. (9认同)

Nix*_*ang 32

更新:

prefs: 从iOS 10开始不起作用.

  • 有什么选择? (4认同)
  • 虽然`prefs:`不再有效,但以下情况(至少在开放时):`App-Prefs :: root = Settings&path = General` (4认同)

Dan*_*Dan 22

是的,看到了这个(以及更多),甚至在测试应用程序中实现了它.真的需要从苹果公司得到明确的一句话,但社区的共识意见是苹果公司在公开"发现/发布"后不允许使用它,因此包含它的应用程序将不被接受.

08/01/12更新:通过我的开发者帐户询问Apple是否有办法以编程方式启动WiFi设置对话框.以下是回复:

"我们的工程师已经审查了您的请求,并得出结论认为,目前出货的系统配置没有支持的方法来实现所需的功能."

  • 我建议任何需要此功能的人来记录官方错误报告.报告的内容越多,可见度越高,未来可能会提供支持的解决方案的可能性越大.http://bugreport.apple.com/ (8认同)

Mik*_*nov 18

iOS 9中它再次运行!

打开设置>常规>键盘,我使用:

prefs:root=General&path=Keyboard
Run Code Online (Sandbox Code Playgroud)

此外,它可以更远的键盘:

prefs:root=General&path=Keyboard/KEYBOARDS
Run Code Online (Sandbox Code Playgroud)

  • 仍需要将prefs URL方案添加到目标 (3认同)
  • 不,他们没有.只需将其与openURL:方法一起使用即可. (2认同)

小智 7

我想在设置应用程序中打开蓝牙菜单,上面的路径(prefs:root = General&path = Bluetooth)对我来说不起作用.最终为我工作的是

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!)
Run Code Online (Sandbox Code Playgroud)

确保首先prefs定义了URL Scheme.


小智 5

iOS10的解决方案.工作良好.

NSURL *URL = [NSURL URLWithString:@"App-prefs:root=TWITTER"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
Run Code Online (Sandbox Code Playgroud)