如何在iOS 11设置中打开您的应用

时间:2017-09-26 08:41:16

标签: swift ios11

似乎Apple已经将很多应用程序配置移动到iOS 11的App路径,如何在“设置”中以编程方式打开应用程序路径?我试过{"error":"access_denied","error_code":21330,"request":"/2/account/profile/email.json"} ,但这似乎不起作用。

  

请注意,我的问题仅限于:如何在设置中打开应用路径:如何打开设置

5 个答案:

答案 0 :(得分:42)

以下是您正在寻找的代码,我想:

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

答案 1 :(得分:10)

Swift 4.2,iOS 12

使用以下功能可以仅打开设置:

extension UIApplication {

    ...

    @discardableResult
    static func openAppSettings() -> Bool {
        guard
            let settingsURL = URL(string: UIApplication.openSettingsURLString),
            UIApplication.shared.canOpenURL(settingsURL)
            else {
                return false
        }

        UIApplication.shared.open(settingsURL)
        return true
    }
}

用法:UIApplication.openAppSettings()

但是请注意不要不要使用“ 非公开网址方案”,例如:prefs:root=App-Prefs:root,因为否则您的应用将被拒绝。这是最近发生的事情,因为我试图在设置中建立到wifi部分的深层链接。

答案 2 :(得分:3)

如果您想使其同时适用于旧的和较​​新的iOS版本,请执行以下操作:

if let url = URL(string:UIApplicationOpenSettingsURLString) {
    if UIApplication.shared.canOpenURL(url) {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(url)
        }
    }
}

答案 3 :(得分:1)

自iOS 10以来,

openURL已被弃用,因此我建议您使用:

if let url = URL(string:UIApplicationOpenSettingsURLString) {
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: { success in
            log.debug("Open app settings success: \(success)")
        })
    }
}

答案 4 :(得分:0)

UIApplicationOpenSettingsURLString已重命名为UIApplication.openSettingsURLString

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