URL iOS 10 上的自定义 URL 设置方案?

Custom URL Scheme for Settings on iOS 10?

知道 iOS 10 上设置的自定义 URL 方案发生了什么事吗? Apple 是否仍然允许第三方应用程序通过 iOS10 上的 URL 方案从应用程序启动 iOS 设置?旧的 URL 方案不再有效了!

用这个,很管用。

if let url = URL(string: UIApplicationOpenSettingsURLString) {
   UIApplication.shared().open(url, options: [:], completionHandler: nil)
 }

None 之前在 iOS 8+ 上启动根 "Settings" 应用程序的方法中的

None 已得到 Apple 的官方支持,因此很遗憾,我们不能依赖它们。依赖未记录行为的应用程序也有可能在 App Store 审查期间被拒绝,即使其他应用程序已被批准——即使相同的应用程序之前已被批准!

我也未能找到任何解决方法,因此您的选择似乎是:

  1. 打开特定于应用程序的 URL(在很多地方都有详细说明,包括上面@alvin-varghese 的回答),然后要求用户向后导航。 (糟糕的用户体验,因为它涉及用户知道从应用列表向上滚动到主要设置部分。)

  2. 在您的应用中使用说明屏幕或提醒来教育用户如何自己找到它。 (并没有好多少,但至少不会陷入没有 waypoints 的陌生环境中。)

在 iOS 10 中似乎没有官方支持的方法来实现这一点,正如您所指出的,这似乎是旧方法(将 prefs 方案添加到您的Info.plist 文件和使用 openURL(_:)) 不再工作。

从iOS10有些东西改了,

因此,对于蓝牙之类的东西,您需要编写以下代码行,

Swift 3.0 :

func openBluetoothSettings(){
        let urlBTSet = URL(string: "App-Prefs:root=Bluetooth")
        let objApp = UIApplication.shared
        objApp.openURL(urlBTSet!)
    }

Objective-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'