iOS 10开放设置崩溃

iOS 10开放设置崩溃,ios,swift,swift3,ios10,openurl,Ios,Swift,Swift3,Ios10,Openurl,因此,我们正在创建一个iOS应用程序,只需按下一个按钮即可打开设备的设置应用程序。我已经看到ios10和swift3的方法有了一些变化,所以我在执行代码之前使用了一个条件来检查用户使用的是哪个iOS版本 if let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) { if #available(iOS 10.0, *) { // iOS 10.0. UIApplicatio

因此,我们正在创建一个iOS应用程序,只需按下一个按钮即可打开设备的设置应用程序。我已经看到ios10和swift3的方法有了一些变化,所以我在执行代码之前使用了一个条件来检查用户使用的是哪个iOS版本

if let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) {

    if #available(iOS 10.0, *) {

        // iOS 10.0.

        UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)

    } else {

        // Fallback on earlier versions.

        UIApplication.shared.openURL(settingsUrl)
    }
}

这在iOS 9设备上运行得非常好,但在iOS 10设备上则不行。问题是,虽然应用程序会将用户发送到iOS 10中的设置应用程序,但它会立即崩溃,没有崩溃日志。如果我用同样的方法打开一个像谷歌这样的网站,它在iOS9和iOS10上都能正常工作。我做了很多研究,他们似乎改变了URL方案中的一些内容,但找不到任何修复/解决方法。

我找到了一种在iOS中打开设置应用程序的方法,方法是在我的项目中添加一个设置包,并使用以下代码:

    let settingsUrl = NSURL(string:UIApplicationOpenSettingsURLString) as! URL
    UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)

如果您的应用程序没有自定义键盘,这似乎是打开本机设置应用程序的唯一方法。

苹果没有正式记录自定义URL方案。它在iOS 10中不再工作了。该应用程序仅允许用户进入应用程序自己的设置页面。 如果你的应用在iOS 10中没有设置页面,它将崩溃

您可以尝试通过“灰色区域”API打开设置页面,如下所示。但我在斯威夫特没有成功。祝你好运


打开UIApplicationOpenSettingsURLString会使应用程序崩溃

我使用的是“App-Prefs:root=WIFI”URL,效果很好

let settingsUrl = URL(string: "App-Prefs:root=WIFI")
        if UIApplication.shared.canOpenURL(settingsUrl!) {
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(settingsUrl!, options: [:], completionHandler: {(success) in debugPrint("Successfully opened settings")})
            } else {
                UIApplication.shared.openURL(settingsUrl!)
            }
    }

我已经在没有通过Xcode运行的设备上独立测试了应用程序,如果这是你的意思?我仍然得到同样的行为。这是一个自定义键盘扩展,因此在容器应用程序中,我们只需显示一个按钮,当单击时,它会将它们直接发送到设置应用程序,而不必自己导航到设置应用程序。它在用户有机会在设置应用程序中执行任何操作之前崩溃。这主要是一种用户体验,但我们认为非常重要。如果你的应用程序仍然支持iOS 9,为什么不使用较旧的
openURL
方法,而不考虑iOS版本?这是完全有效和安全的。我只是尝试了一下,又遇到了同样的问题。我认为这与iOS 10有关,而不是与swift 3有关。答案/评论中讨论了这一点。人们说,iOS 10不起作用。它与任何键盘设置无关。此代码段无法防止设置应用程序在iOS 10上崩溃。无论是模拟器还是真实设备,从任何应用程序打开时,设置都会崩溃。我用一个按钮创建了一个新项目,只是为了打开设置。并打开应用程序中的设置,导致iOS 10崩溃。仅供参考,相关线程:你能指出你所指的“苹果文档”吗?对不起,我的错。我想说我在他们的文档中没有找到自定义URL方案。