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

iOS启动设置->;限制URL方案,ios,iphone,settings,url-scheme,uiapplication,Ios,Iphone,Settings,Url Scheme,Uiapplication,我最近发现了非常棒的iOS5自定义设置URL方案,可以在下面这篇文章中详细解释 我发现这是可行的,将用户从我的应用程序定向到设置应用程序: [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"prefs:root=General"]]; 但似乎无法通过路径参数直接路由到限制路径: [[UIApplication sharedApplication] openURL: [NSURL URLWit

我最近发现了非常棒的iOS5自定义设置URL方案,可以在下面这篇文章中详细解释

我发现这是可行的,将用户从我的应用程序定向到设置应用程序:

[[UIApplication sharedApplication] openURL:
       [NSURL URLWithString:@"prefs:root=General"]];
但似乎无法通过
路径
参数直接路由到限制路径:

[[UIApplication sharedApplication] openURL:
   [NSURL URLWithString:@"prefs:root=General&path=Restrictions"]];
是否有人找到了相关的文档,或者能够做到这一点

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

正如我的回答,这在IOS 10中不起作用


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

path
组件可能与实际部分的名称不同,但也可能当前无法直接从URL访问该部分。我发现了一个可能的URL列表,上面没有限制,也许还没有找到

设置应用程序中当前已知URL的列表:

  • prefs:root=General&path=About
  • 首选项:根=常规&路径=辅助功能
  • 首选项:根=飞机模式
  • prefs:root=General&path=AUTOLOCK
  • 首选项:根=常规&路径=使用情况/蜂窝\u使用情况
  • prefs:root=亮度
  • 首选项:根=常规&路径=蓝牙
  • 首选项:根=常规&路径=日期和时间
  • prefs:root=FACETIME
  • prefs:root=General
  • 首选项:根=常规&路径=键盘
  • prefs:root=CASTLE
  • 首选项:根=城堡&路径=存储和备份
  • 首选项:根=常规&路径=国际
  • prefs:root=位置\服务
  • prefs:root=帐户设置
  • prefs:root=音乐
  • prefs:root=MUSIC&path=EQ
  • prefs:root=MUSIC&path=VolumeLimit
  • 首选项:根=常规&路径=网络
  • 首选项:root=NIKE\u PLUS\u IPOD
  • prefs:root=NOTES
  • prefs:root=NOTIFICATIONS\u ID
  • prefs:root=Phone
  • prefs:root=照片
  • prefs:root=General&path=managedConfiguration列表
  • 首选项:根=常规&路径=重置
  • 首选项:根=声音&路径=铃声
  • prefs:root=Safari
  • 首选项:根=常规&路径=助手
  • prefs:root=声音
  • prefs:root=General&path=SOFTWARE\u UPDATE\u链接
  • prefs:root=STORE
  • prefs:root=TWITTER
  • prefs:root=General&path=USAGE
  • prefs:root=视频
  • 首选项:根=常规&路径=网络/VPN
  • prefs:root=墙纸
  • prefs:root=WIFI
  • prefs:root=互联网链接
    • 是的,看到了这一点(还有更多),甚至在测试应用程序中实现了它。确实需要从苹果那里得到一个明确的词,但社区一致的意见是,苹果在5.1中公开“发现/发布”了这个词之后,不允许它,所以包含它的应用程序将不会被接受

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

      “我们的工程师审查了您的请求,并得出结论: 没有支持的方法来实现给定的所需功能 当前正在装运的系统配置。”


      从iOS8开始,您可以通过以下方式打开内置设置应用程序:

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

      实际的URL字符串是
      @“应用程序设置:
      ”。我尝试在字符串中添加不同的部分(“蓝牙”、“常规”等),但似乎只链接到主设置屏幕。如果您发现其他问题,请发布回复。

      如果您将prefs URL方案添加到iOS应用程序中,它将允许您使用iOS 5中可能使用的所有方案。我已经在iOS9上测试过了,但我认为它也可以在旧版本上使用


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

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

      确保您首先定义了
      prefs
      URL方案。

      ios9中,它再次工作

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

      prefs:root=General&path=Keyboard
      
      此外,还可以进一步使用键盘

      prefs:root=General&path=Keyboard/KEYBOARDS
      

      我还发现了一些其他的东西:

    • 在我定义了“prefs”URL方案之后,“prefs:root=Safari&path=ContentBlockers”正在模拟器上工作(iOS 9.1英文版),但没有在模拟器上工作(简体中文)。它只是跳转到Safari,而不是内容拦截器。如果您的应用程序是国际性的,请小心。
      更新:不知道为什么,现在我不能再跳转到ContentBlocker了,相同的代码,相同的版本,现在不工作了(

    • 在真实设备上(我的是iPhone 6S和iPad mini 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)
      }
      
    • 到目前为止,还没有发现iPhone和iPad之间有任何区别


    • 我在这里更新一条新闻。 使用“prefs:”不会被苹果拒绝,我测试了它,并检查了AppStore(2016年8月)的批准。thx。

      更新:


      prefs:
      自iOS 10起将不起作用。

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


      从iOS10开始,您可以使用

      UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root")!) 
      
      打开常规设置

      此外,您还可以向其中添加已知URL(您可以在投票最多的答案中看到它们)以打开特定设置。例如,下面的一个打开touchID和密码

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

      iOS10的解决方案。工作正常

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

      使用
      应用程序首选项:

      App-prefs:root=MOBILE_DATA_SETTINGS_ID
      

      请参见

      只是一个善意的警告,表示iOS5.1中将删除iOS设置的所有url方案(因此,像prefs:root=General&path=Network这样的url将不再工作),因此,请注意。它们并没有被完全删除
      App-prefs:root=MOBILE_DATA_SETTINGS_ID