Ответ 1
Вот код, который вы ищете, я думаю:
if let url = URL(string: UIApplicationOpenSettingsURLString) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
Похоже, что Apple переместила множество конфигураций приложений в путь приложения с помощью 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 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
, потому что в противном случае ваше приложение будет отклонено. Это случилось со мной недавно, так как я пытался получить ссылку в разделе Wi-Fi в настройках.
И если вы хотите, чтобы он работал как для старых, так и для новых версий 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)
}
}
}
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)")
})
}
}