知道 iOS 10 上设置的自定义 URL 方案发生了什么吗?Apple 是否仍然允许第三方应用程序通过 iOS10 上的 URL 方案从应用程序启动 iOS 设置?旧的 URL 方案不再起作用了!
3 回答
以前在 iOS 8+ 上启动根“设置”应用程序的方法都没有得到 Apple 的正式支持,所以很遗憾我们不能依赖它们。即使其他应用程序已获得批准,依赖未记录行为的应用程序也可能在 App Store 审核期间被拒绝 - 即使同一个应用程序之前已获得批准!
我也找不到任何解决方法,所以您的选择似乎是:
打开特定于应用程序的 URL(在许多地方都有详细说明,包括上面的 @alvin-varghese 的答案),然后要求用户向后导航。(糟糕的用户体验,因为它涉及到用户知道从应用列表向上滚动到主要设置部分。)
在您的应用程序中使用指导性屏幕或警报来教育用户如何自己找到它。(好不了多少,但至少不会陷入没有航路点的陌生环境。)
在 iOS 10 中似乎没有官方支持的方式来实现这一点,正如您所指出的,旧方式(将prefs
方案添加到您的 Info.plist 文件并使用openURL(_:)
)似乎不再起作用。
从 iOS 10 开始,一些事情发生了变化,
所以,对于像蓝牙这样的东西,你需要在下面的代码行中编写,
斯威夫特 3.0:
func openBluetoothSettings(){
let urlBTSet = URL(string: "App-Prefs:root=Bluetooth")
let objApp = UIApplication.shared
objApp.openURL(urlBTSet!)
}
目标-c
-(void) openBluetoothSettings{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=Bluetooth"]];
}
所以,在上面的代码中,他们改变的是字符串需要添加“App-Prefs:root=Bluetooth”(这是打开蓝牙设置的例子)
不要忘记:'Goto taget -> info -> URL Types -> Add "prefs" in URL Schemes'
使用这个,它的工作原理。
if let url = URL(string: UIApplicationOpenSettingsURLString) {
UIApplication.shared().open(url, options: [:], completionHandler: nil)
}