因此,我們正在創建一個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