swift - El esquema de URL "prefs" no funciona en iOS 10(Beta 1 y 2)
url-scheme ios10 (6)
Esto no está disponible en iOS 11, solo podemos abrir configuraciones como:
if let url = URL(string:UIApplicationOpenSettingsURLString) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
No puedo hacer que el esquema de URL "prefs" funcione en iOS 10 (Beta 1).
Está configurado correctamente ya que la misma aplicación funciona bien en iOS 9.
¿Es esto un error o fue renombrado / eliminado?
Código:
let settingsUrl = NSURL(string: "prefs:root=SOMETHING")
if let url = settingsUrl {
UIApplication.sharedApplication().openURL(url)
}
Actualización:
(Beta 2)
Aún no funciona en Beta 2.
Parece ser un error.
Por ejemplo, si desea invitar a alguien que usa GameCenter en iOS 10 y no ha iniciado sesión en iMessage, recibirá una ventana emergente que le pedirá que inicie sesión. Pero el botón "Configuración" no hace absolutamente nada.
Para el registro, para los servicios de ubicación
App-Prefs:root=Privacy&path=LOCATION
funcionó para mí.
Cuando probé en un dispositivo y no en un simulador.
No enumeraré las cosas que intenté que no funcionaron, es una lista larga.
Ejemplo de uso que asume que los servicios de ubicación están deshabilitados o el permiso es denegado o no determinado:
if !CLLocationManager.locationServicesEnabled() {
if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION") {
// If general location settings are disabled then open general location settings
UIApplication.shared.openURL(url)
}
} else {
if let url = URL(string: UIApplicationOpenSettingsURLString) {
// If general location settings are enabled then open location settings for the app
UIApplication.shared.openURL(url)
}
}
Puede usar
UIApplicationOpenSettingsURLString
para abrir la configuración de
su propia
aplicación (esto ha estado disponible desde iOS 8) pero cualquier otra
prefs:
URL ahora se considera una API privada y su uso dará como resultado el rechazo de la aplicación.
Puedes usar
Prefs:root=SOMETHING
Esquema de URL actualizado de iOS 10 para la configuración, debe aumentar la "p".
Ref: https://github.com/cyanzhong/app-tutorials/blob/master/schemes.md
AVISO: solo funciona en widgets, no funciona en aplicaciones. (iOS 10.0.2)
La solución de @Saumil Shah funciona en la aplicación, es más útil.
Si alguien está interesado en una API de "área gris", puede usar:
//url = "prefs:root=SOMETHING"
[[LSApplicationWorkspace defaultWorkspace] openSensitiveURL:url withOptions:nil];
Esto te dará lo que quieres. Escóndelo bien y funciona en iOS 10.
Simplemente reemplace las
prefs
de
App-Prefs
para iOS 10
El siguiente código funciona para iOS 8,9,10
Swift 3.0 y Xcode> = 8.1
if #available(iOS 10.0, *)
{
UIApplication.shared.openURL(URL(string: "App-Prefs:root=SOMETHING")!)
}
else
{
UIApplication.shared.openURL(URL(string: "prefs:root=SOMETHING")!)
}
Swift 2.2
if #available(iOS 10.0, *)
{
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=SOMETHING")!)
}
else
{
UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=SOMETHING")!)
}
Funciona para mi.
Happy Coding 😊