我无法获得" prefs" URL方案适用于iOS 10(Beta 1)。
它设置正确,因为相同的应用程序在iOS 9上正常工作。
这是一个错误还是重命名/删除了?
代码:
let settingsUrl = NSURL(string: "prefs:root=SOMETHING")
if let url = settingsUrl {
UIApplication.sharedApplication().openURL(url)
}
更新: (Beta 2)
仍未在Beta 2中工作。
它接缝是一个错误。例如,如果您想在iOS 10中使用GameCenter邀请某人并且您未登录iMessage,则会弹出一个要求您登录的弹出窗口。但是"设置"按钮绝对没有。
答案 0 :(得分:19)
对于iOS 10,只需将prefs
替换为App-Prefs
以下代码适用于iOS 8,9,10
Swift 3.0和Xcode> = 8.1
if #available(iOS 10.0, *)
{
UIApplication.shared.openURL(URL(string: "App-Prefs:root=SOMETHING")!)
}
else
{
UIApplication.shared.openURL(URL(string: "prefs:root=SOMETHING")!)
}
Swift 2.2
if #available(iOS 10.0, *)
{
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=SOMETHING")!)
}
else
{
UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=SOMETHING")!)
}
适合我。
快乐编码
答案 1 :(得分:4)
您可以使用Prefs:root=SOMETHING
iOS 10更新了设置的URL方案,您需要更新" p"。
参考:https://github.com/cyanzhong/app-tutorials/blob/master/schemes.md
注意:它仅适用于小部件,不适用于应用。 (iOS 10.0.2)
@Saumil Shah的解决方案在App中运行,更有用。
答案 2 :(得分:3)
您可以使用UIApplicationOpenSettingsURLString
打开您自己的应用程序的设置(自iOS 8开始提供),但任何其他prefs:
网址现在都被视为私有API并使用将导致应用拒绝。
答案 3 :(得分:3)
对于记录,位置服务App-Prefs:root=Privacy&path=LOCATION
为我工作。当我在设备而不是模拟器上进行测试时。
我不会列出我尝试过的不起作用的东西,这是一个很长的清单。
假定位置服务已禁用或权限被拒绝或未确定的用法示例:
if !CLLocationManager.locationServicesEnabled() {
if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION") {
// If general location settings are disabled then open general location settings
UIApplication.shared.openURL(url)
}
} else {
if let url = URL(string: UIApplicationOpenSettingsURLString) {
// If general location settings are enabled then open location settings for the app
UIApplication.shared.openURL(url)
}
}
答案 4 :(得分:1)
如果有人对灰色区域感兴趣" API,您可以使用:
//url = "prefs:root=SOMETHING"
[[LSApplicationWorkspace defaultWorkspace] openSensitiveURL:url withOptions:nil];
这会给你你想要的。 隐藏它,它适用于iOS 10。
答案 5 :(得分:1)
这在iOS 11上不可用,我们只需打开设置,如:
if let url = URL(string:UIApplicationOpenSettingsURLString) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}