在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什么都不做。
只需将prefs
replace为适用于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中工作。