swift url-scheme ios10

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 😊