" prefs" URL方案在iOS 10(Beta 1& 2)中不起作用

时间:2016-06-27 23:03:40

标签: swift url-scheme ios10

我无法获得" 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,则会弹出一个要求您登录的弹出窗口。但是"设置"按钮绝对没有。

6 个答案:

答案 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)
   }
}