Utilizando UIApplication.openSettingsURLString
Actualización para Swift 5.1
override func viewDidAppear(_ animated: Bool) {
let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
}
}
alertController.addAction(settingsAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)
}
Swift 4.2
override func viewDidAppear(_ animated: Bool) {
let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
}
}
alertController.addAction(settingsAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)
}
viewDidAppear
método, con el botónSettings
yCancel
UIApplication.sharedApplication().openURL(yourCustomURL)
desde la aplicación actual, pero no tiene ese acceso desde la aplicación ConfiguraciónRespuesta original a continuación
Swift 5
Swift 4
NOTA: El siguiente método funciona para todas las versiones inferiores a iOS 11, para versiones superiores la aplicación podría ser rechazada ya que es una API privada
A veces, queremos llevar a un usuario a configuraciones distintas de la configuración de nuestra aplicación. El siguiente método lo ayudará a lograrlo:
Primero, configure los esquemas de URL en su proyecto. Lo encontrará en Target -> Información -> Esquema de URL. haga clic en el botón + y escriba prefs en esquemas de URL
Swift 5
Swift 3
Rápido
C objetivo
y las siguientes son todas las URL disponibles
** En iOS <12 **
En iOS 13
Preferencias de aplicación: DO_NOT_DISTURB
No probado
Preferencias de aplicación: TWITTER (??)
Nota: La configuración de red no se abrirá en un simulador, pero el enlace funcionará en un dispositivo real.
fuente
App-Prefs
lugar deprefs
como el esquema de la cadena de URL. por ejemploApp-Prefs:root=WIFI
App-Prefs
oprefs:root
ya que estos son API privada, ya menos que usted es muy afortunado que su aplicación va a ser rechazado.En iOS 8+ puedes hacer lo siguiente:
Swift 4
fuente
UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
URL(string: UIApplication.openSettingsURLString).map { UIApplication.shared.open($0, options: [:], completionHandler: nil) }
Usando la sugerencia de @ vivek, desarrollo una clase de utilidades basada en Swift 3 , ¡espero que lo aprecies!
¡Esto es muy útil ya que las API cambiarán con seguridad y puede refactorizar una vez y muy rápido!
fuente
La primera respuesta de los esquemas de URL específicos de la aplicación funcionó para mí en iOS 10.3.
fuente
App-Prefs:root=Privacy&path=LOCATION
funcionó para mí para llegar a la configuración general de ubicación. Nota: solo funciona en un dispositivo.fuente
en ios10 / Xcode 8 en simulador:
trabajos
no.
fuente
NS
ha eliminado el prefijo en iOS 10?He visto esta linea de codigo
no funciona, no funcionó para mí en ios10 / Xcode 8, solo una pequeña diferencia de código, reemplace esto con
Swift3
Reemplazar con
Espero eso ayude. Salud.
fuente
advertencia: los esquemas
prefs:root
oApp-Prefs:root
URL se consideran API privados. Apple puede rechazar su aplicación si la usa, esto es lo que puede obtener al enviar su aplicación:fuente
Swift 4.2, iOS 12
El
open(url:options:completionHandler:)
método se ha actualizado para incluir un diccionario de opciones no nulo, que a partir de esta publicación solo contiene una posible opción de tipoUIApplication.OpenExternalURLOptionsKey
(en el ejemplo).Al construir explícitamente una URL, como con "App-Prefs", AFAIK ha rechazado algunas aplicaciones de la tienda.
fuente
Agregando a @Luca Davanzo
iOS 11, algunas configuraciones de permisos se han movido a la ruta de la aplicación:
fuente
SWIFT 4
Esto podría tomar la configuración específica de su aplicación, si eso es lo que está buscando.
fuente
Como arriba @niravdesai dijo App-prefs. Descubrí que
App-Prefs:
funciona para dispositivos iOS 9, 10 y 11. probados. dondeprefs:
solo funciona en iOS 9.fuente