Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在iOS 11中打开应用程序设置_Swift_Ios11 - Fatal编程技术网

Swift 如何在iOS 11中打开应用程序设置

Swift 如何在iOS 11中打开应用程序设置,swift,ios11,Swift,Ios11,苹果似乎已经用iOS 11将许多应用程序配置移动到了应用程序路径,如何在设置中以编程方式打开应用程序路径?我尝试了“App-Prefs:root=\(Bundle.main.bundleIdentifier!)”,但这似乎不起作用 请注意,我的问题是针对:如何在设置中打开应用程序路径:不如何打开设置 我想这是您要查找的代码: if let url = URL(string: UIApplicationOpenSettingsURLString) { if UIApplication.sh

苹果似乎已经用iOS 11将许多应用程序配置移动到了应用程序路径,如何在设置中以编程方式打开应用程序路径?我尝试了
“App-Prefs:root=\(Bundle.main.bundleIdentifier!)”
,但这似乎不起作用

请注意,我的问题是针对:如何在设置中打开应用程序路径:如何打开设置


我想这是您要查找的代码:

if let url = URL(string: UIApplicationOpenSettingsURLString) {
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
}
此外,swift 5的更新版本:

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

openURL
自iOS 10以来就被弃用,因此我建议您使用:

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

如果您想让它同时适用于较旧和较新的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)
        }
    }
}

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


但请注意不要使用“非公开URL方案”,例如:
prefs:root=
App-prefs:root
,否则您的应用将被拒绝。最近我在设置中尝试与wifi部分建立深度链接时发生了这种情况。

uiapplicationopensetingsurlstring
已重命名为
UIApplication.opensetingsurlstring

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

你好我没有找到打开wifi设置屏幕的其他字符串注意:UIApplication.shared.open(url,选项:[:],completionHandler:nil)是iOS 10+。不需要调用
canOpenURL
,后续调用
open
失败(不会引发异常或崩溃应用程序)。使用
UIApplication.shared.openURL(url)
在IOS 10之前锁定目标时。这将在“设置”中打开您的应用程序。伟大的如何只打开设置应用程序?没有人知道@DanielSpringer。您可能应该将该应用程序命名为
UIApplication.openAppSettings()
(注意
s
),以符合
opensetingsurlstring
的要求。如果存在特定于应用程序的设置(如Siri使用情况或联系人),您可以使用这些设置。如果它们不存在,它会将您带到设置应用程序以及上次打开的任何页面。它没有做什么,也没有人能弄清楚的是,如果应用程序有设置页面,如何始终在主屏幕上打开设置应用程序。Swift 4.2 UIApplicationOpenSettingsURLString已重命名为UIApplication.openSettingsURLString