因此,我们正在创建一个iOS应用程序,只需按一下按钮即可打开设备的设置应用程序。我已经看到该方法在iOS 10和Swift 3中略有改变,所以我使用条件来检查用户在执行代码之前所在的iOS版本。iOS 10打开设置崩溃
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中的设置应用程序,但它会立即崩溃而不会出现崩溃日志。如果我使用相同的方法打开像Google这样的网站,它在iOS 9和10上都可以很好地工作。我做了大量的研究,看起来他们已经通过URL方案更改了一些内容,但找不到任何内容修复/解决方法。
我已经独立测试的应用程序在设备上不运行Xcode时,如果这就是你的意思?我仍然得到同样的行为。 – BenSDConway
这是一个自定义的键盘扩展,所以在容器应用程序中,我们只是简单地显示一个按钮,点击后直接将它们发送到设置应用程序,而不必自己在那里导航。它在用户有机会在设置应用程序中执行任何操作之前崩溃。这主要是一种用户体验,但我们相信非常重要。 – BenSDConway
如果您的应用程序仍支持iOS 9,为什么不使用较旧的'openURL'方法而不考虑iOS版本?这是完全有效和安全的。 – rmaddy