Итак, мы создаем приложение iOS, которое при нажатии кнопки открывает приложение настроек устройства. Я видел, что метод немного изменился с помощью iOS 10 и Swift 3, поэтому я использую условное выражение для проверки версии 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, оно немедленно сработает без журналов сбоев. Если я использую тот же метод для открытия веб-сайта, такого как Google, он отлично работает как на iOS 9, так и на 10. Я провел много исследований и, похоже, они изменили некоторые вещи с помощью схем URL, но не могут найти исправления/обходные пути.