在iOS 10(testing版1和2)中不使用“prefs”URL计划

我无法使“prefs”URL计划在iOS 10(testing版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的人,而你没有login到iMessage,你会得到一个popup窗口,要求你login。但是“设置”button什么都不做。

只需将prefsreplace为适用于iOS 10的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")!) } 

为我工作。

快乐编码😊

你可以使用Prefs:root=SOMETHING

iOS 10更新了“设置”的“urlscheme”,您需要提供“p”。

参考: https : //github.com/cyanzhong/app-tutorials/blob/master/schemes.md

注意:它只适用于Widgets,不适用于Apps。 (iOS 10.0.2)

@Saumil Shah的解决scheme在App中起作用,更有用。

为了logging,定位服务App-Prefs:root=Privacy&path=LOCATION为我工作。 当我在设备上进行testing而不是模拟器时。

我不会列出我尝试过的东西没有用,这是一个很长的名单。

使用示例假定位置服务被禁用或权限被拒绝或未被确定:

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

您可以使用UIApplicationOpenSettingsURLString来打开您自己的应用程序的设置(自iOS 8以来就可以使用这些设置),但是现在任何其他的prefs: URL都被认为是私有API,使用会导致应用程序拒绝。

如果有人对“灰色地带”API感兴趣,可以使用:

 //url = "prefs:root=SOMETHING" [[LSApplicationWorkspace defaultWorkspace] openSensitiveURL:url withOptions:nil]; 

这会给你你想要的。 隐藏它 ,它在iOS 10中工作。