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

我最近发现了一个非常棒的iOS5自定义设置URL方案 ,可以在这个伟大的网站上详细解释。

我已经找到了这个工作,指导用户从我的应用程序的设置应用程序:

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

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

 [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"prefs:root=General&path=Restrictions"]]; 

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

任何有识之士将不胜感激。 我试图让用户启用应用程序内购买,而不是用户手动点击限制(不是很明显)。

    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

    从iOS8开始,您可以打开内置的设置应用程序:

     NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; } 

    实际的URL字符串是@"app-settings:" 。 我尝试追加不同部分的字符串(“蓝牙”,“通用”等),但似乎只有链接到主要设置屏幕的作品。 发表一个答复,如果你发现了其他情况。

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

    更新:

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

    是的,看到这个(还有更多),甚至在测试应用程序中实现它。 真的需要得到苹果公司的权威词汇,但是社区的共识是苹果在公开“发现/公布”之后不允许在5.1版本中公开发表,否则包含它的申请将不被接受。

    08/01/12更新:通过我的开发人员帐户问苹果是否有方法以编程方式启动WiFi设置对话框。 这是回应:

    “我们的工程师已经审查了您的要求,并得出结论认为,鉴于目前的运输系统配置,没有支持的方式来实现所需的功能。”

    iOS 9中,它再次运作!

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

     prefs:root=General&path=Keyboard 

    而且, 键盘可以走得更远:

     prefs:root=General&path=Keyboard/KEYBOARDS 

    我想打开设置应用程序中的蓝牙菜单,上面的路径(prefs:root = General&path = Bluetooth)不适用于我。 最后为我工作的是

     UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!) 

    确保首先定义了prefs URL Scheme。

    解决方案为iOS10。 工作正常。

     NSURL *URL = [NSURL URLWithString:@"App-prefs:root=TWITTER"]; [[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil]; 

    从iOS10开始,你可以使用

     UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root")!) 

    打开常规设置。

    你也可以添加已知的网址(你可以在最高的答案中看到它们)来打开特定的设置。 例如下面的打开touchID和密码。

     UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!) 

    这里是我发现的其他东西:

    1. 在定义了“prefs”URL Scheme之后, “prefs:root = Safari&path = ContentBlockers”正在模拟器(iOS 9.1 English )上工作,但在Simulator (简体中文)上不能工作。 它只是跳转到Safari,而不是内容拦截器。 如果你的应用程序是国际的,要小心。
      更新:不知道为什么,现在我无法再跳到ContentBlockers,相同的代码,相同的版本,现在不工作。 🙁

    2. 在真正的开发(我的iPhone 6S和iPad的迷你2), “Safari”应该是“SAFARI” ,“Safari”不工作在真正的设备上,“SAFARI”现在在模拟器上工作:

       #if arch(i386) || arch(x86_64) // Simulator let url = NSURL(string: "prefs:root=Safari")! #else // Device let url = NSURL(string: "prefs:root=SAFARI")! #endif if UIApplication.sharedApplication().canOpenURL(url) { UIApplication.sharedApplication().openURL(url) } 
    3. 到目前为止,没有发现iPhone和iPad之间的任何区别。

    我在这里更新一个消息。 只使用“首选项:”不被苹果拒绝,我测试了它,并核准了应用程序商店(2016年8月)。 谢谢。

    适用于IOS 10的应用程序通知设置(测试)

     if(&UIApplicationOpenSettingsURLString != nil){ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; } 

    iOS 10

    使用app-prefs:

     App-prefs:root=MOBILE_DATA_SETTINGS_ID 

    参见要点