iOS启动设置 – >限制URLscheme
我最近发现了一个非常棒的iOS5自定义设置URLscheme ,可以在这个伟大的网站上详细解释。
我已经find了这个工作,指导用户从我的应用程序的设置应用程序:
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"prefs:root=General"]];
但似乎无法通过path
参数直接路由到限制path:
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"prefs:root=General&path=Restrictions"]];
有没有人find这方面的文件或能够使这项工作?
任何有识之士将不胜感激。 我试图让用户启用应用程序内购买,而不是用户手动点击限制(不是很明显)。
AS @Nix Wang回答这个问题不适用于 IOS 10
警告:此方法不适用于运行iOS 5.1及更高版本的设备 – 请参阅下面的Hlung的注释。
path
组件的名称可能与实际部分不同,但也有可能您目前无法直接从URL访问该部分。 我发现了一个可能的URL和限制的列表不在上面,也许还没有被发现。
“设置”应用中当前已知的url列表:
- 首选项:根=通用及path=关于
- 首选项:根=通用及path= ACCESSIBILITY
- 首选项:根= AIRPLANE_MODE
- 首选项:根=通用及path= AUTOLOCK
- 首选项:根=通用及path= USAGE / CELLULAR_USAGE
- 首选项:根=亮度
- 首选项:根=通用及path=蓝牙
- 首选项:根=通用及path= DATE_AND_TIME
- 首选项:根= FACETIME
- 首选项:根=通用
- 首选项:根=通用及path=键盘
- 首选项:根= CASTLE
- 首选项:根=城堡&path= STORAGE_AND_BACKUP
- 首选项:根=通用及path= INTERNATIONAL
- 首选项:根= LOCATION_SERVICES
- 首选项:根= ACCOUNT_SETTINGS
- 首选项:根= MUSIC
- 首选项:根=音乐与path= EQ
- 首选项:根=音乐与path= VolumeLimit
- 首选项:根=通用及path=networking
- 首选项:根= NIKE_PLUS_IPOD
- 首选项:根= NOTES
- 首选项:根= NOTIFICATIONS_ID
- 首选项:根=电话
- 首选项:根=照片
- 首选项:根=通用及path= ManagedConfigurationList
- 首选项:根=通用及path=复位
- 首选项:根=声音和path=铃声
- 首选项:根= Safari浏览器
- 首选项:根=通用及path=助理
- 首选项:根=声音
- 首选项:根=通用及path= SOFTWARE_UPDATE_LINK
- 首选项:根= STORE
- 首选项:根= TWITTER
- 首选项:根=通用及path= USAGE
- 首选项:根= VIDEO
- 首选项:根=通用及path=networking/ VPN
- 首选项:根=壁纸
- 首选项:根= WIFI
- 首选项:根= INTERNET_TETHERING
从iOS8开始,您可以打开内置的设置应用程序:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; }
实际的URLstring是@"app-settings:"
。 我尝试追加不同部分的string(“蓝牙”,“一般”等),但似乎只有链接到主要设置屏幕的作品。 发表一个答复,如果你发现了其他情况。
如果您将iOS的prefs URLscheme添加到您的iOS应用程序中,它将允许您使用我们在iOS 5中可以使用的所有scheme。我已经在iOS 9上对其进行了testing,但是我认为它也适用于旧版本。
更新:
prefs:
自iOS 10以后将不起作用。
是的,看到这个(还有更多),甚至在testing应用程序中实现它。 真的需要得到苹果公司的权威词汇,但是社区的共识是苹果在公开“发现/公布”之后不允许在5.1版本中公开发表,否则包含它的申请将不被接受。
08/01/12更新:通过我的开发人员帐户问苹果是否有方法以编程方式启动WiFi设置对话框。 这是回应:
“我们的工程师已经审查了您的要求,并得出结论认为,鉴于目前的运输系统configuration,没有支持的方式来实现所需的function。”
在iOS 9中,它再次运作!
要打开设置>常规>键盘 ,我使用:
prefs:root=General&path=Keyboard
而且, 键盘可以走得更远:
prefs:root=General&path=Keyboard/KEYBOARDS
我想打开设置应用程序中的蓝牙菜单,上面的path(prefs:root = General&path = Bluetooth)不适用于我。 最后为我工作的是
UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!)
确保首先定义了prefs
URL Scheme。
解决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")!)
打开常规设置。
您也可以添加已知的url(您可以在最高的答案中看到它们)来打开特定的设置。 例如下面的打开touchID和密码。
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)
这里是我发现的其他东西:
-
在定义了“prefs”URL Scheme之后, “prefs:root = Safari&path = ContentBlockers”正在模拟器(iOS 9.1 English )上工作,但在Simulator (简体中文)上不能工作。 它只是跳转到Safari浏览器,而不是内容拦截器。 如果你的应用程序是国际的,要小心。
更新:不知道为什么,现在我无法再跳到ContentBlockers,相同的代码,相同的版本,现在不工作。 🙁 -
在真正的开发(我的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) }
-
到目前为止,没有发现iPhone和iPad之间的任何区别。
我在这里更新一个消息。 只使用“首选项:”不被苹果拒绝,我testing了它,并核准了应用程序商店(2016年8月)。 谢谢。
适用于IOS 10的应用程序通知设置(testing)
if(&UIApplicationOpenSettingsURLString != nil){ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; }
iOS 10
使用app-prefs:
App-prefs:root=MOBILE_DATA_SETTINGS_ID
参见要点