Configuración de inicio de iOS -> Restricciones URL Scheme

Recientemente descubrí el impresionante esquema de URL de configuration personalizada de iOS5 , que se puede explicar en detalle en este excelente website .

He encontrado que esto funciona, dirigiendo al usuario a la aplicación Configuración desde mi aplicación:

[[UIApplication shanetworkingApplication] openURL: [NSURL URLWithString:@"prefs:root=General"]]; 

Pero parece que no puede enrutar directamente a la ruta Restricciones a través del parámetro de path :

 [[UIApplication shanetworkingApplication] openURL: [NSURL URLWithString:@"prefs:root=General&path=Restrictions"]]; 

¿Alguien ha encontrado documentation sobre esto o ha podido hacer que esto funcione?

Cualquier idea sería muy apreciada. Estoy intentando llevar al usuario para habilitar la compra en la aplicación, y prefiero no hacer que el usuario haga clic manualmente en Restricciones (no muy obvias).

RESPUESTA AS @Nix Wang RESPUESTA ESTO NO FUNCIONA EN IOS 10


ADVERTENCIA: este método no funcionará para dispositivos que ejecuten iOS 5.1 o superior: consulte el comentario de Hlung a continuación.

Es posible que el componente de path tenga un nombre diferente al de la sección real, pero también es posible que no pueda acceder a esa sección directamente desde una URL. Encontré una list de posibles URL y restricciones que no está en ella, tal vez no se haya descubierto todavía.

Lista de URL conocidas actualmente en la aplicación Configuración:

  • prefs: root = General & path = Acerca de
  • prefs: root = General & path = ACCESIBILIDAD
  • prefs: root = AIRPLANE_MODE
  • prefs: root = General & path = AUTOLOCK
  • prefs: root = General & path = USAGE / CELLULAR_USAGE
  • prefs: root = Brillo
  • prefs: root = General & path = Bluetooth
  • prefs: root = General & path = DATE_AND_TIME
  • prefs: root = FACETIME
  • prefs: root = General
  • prefs: root = General & path = Teclado
  • prefs: root = CASTLE
  • prefs: root = CASTLE & path = STORAGE_AND_BACKUP
  • prefs: root = General & path = INTERNACIONAL
  • prefs: root = LOCATION_SERVICES
  • prefs: root = ACCOUNT_SETTINGS
  • prefs: root = MUSIC
  • prefs: root = MUSIC & path = EQ
  • prefs: root = MUSIC & path = VolumeLimit
  • prefs: root = General & path = Red
  • prefs: root = NIKE_PLUS_IPOD
  • prefs: root = NOTAS
  • prefs: root = NOTIFICATIONS_ID
  • prefs: root = Phone
  • prefs: root = Fotos
  • prefs: root = General & path = ManagedConfigurationList
  • prefs: root = General & path = Reset
  • prefs: root = Sounds & path = Ringtone
  • prefs: root = Safari
  • prefs: root = General & path = Assistant
  • prefs: root = Sonidos
  • prefs: root = General & path = SOFTWARE_UPDATE_LINK
  • prefs: root = ALMACENAR
  • prefs: root = TWITTER
  • prefs: root = General & path = USO
  • prefs: root = VIDEO
  • prefs: root = General & path = Red / VPN
  • prefs: root = Wallpaper
  • prefs: root = WIFI
  • prefs: root = INTERNET_TETHERING

A partir de iOS8, puede abrir la aplicación integrada de configuration con:

 NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; if ([[UIApplication shanetworkingApplication] canOpenURL:url]) { [[UIApplication shanetworkingApplication] openURL:url]; } 

La cadena URL real es @"app-settings:" . Intenté agregar secciones diferentes a la cadena ("Bluetooth", "GENERAL", etc.) pero parece que solo funciona la pantalla de configuration principal. Publique una respuesta si descubre lo contrario.

Si agrega el esquema de prefs URL a su aplicación de iOS, le permitirá usar todos esos esquemas que pudimos en iOS 5. Lo he probado en iOS 9, pero creo que funcionará también en versiones anteriores.

Actualizar:

prefs: NO funcionará desde iOS 10.

Sí, vimos esto (y muchos más), incluso lo implementamos en una aplicación de testing. Realmente necesito get la palabra definitiva de Apple, pero la opinión de consenso de la comunidad es que Apple no lo admitió en 5.1 después de que fue públicamente "descubierto / publicado", por lo que las aplicaciones que lo contengan no serán aceptadas.

01/08/12 Actualización: le pregunté a Apple a través de mi count de desarrollador si hay una forma de iniciar mediante progtwigción el cuadro de dialog Configuración WiFi. Aquí está la respuesta:

"Nuestros ingenieros han revisado su request y han llegado a la conclusión de que no existe una forma compatible para lograr la funcionalidad deseada, dadas las configuraciones del sistema de envío actual".

¡En iOS 9 funciona de nuevo!

Para abrir Configuración> General> Teclado , utilizo:

 prefs:root=General&path=Keyboard 

Además, es posible ir más allá de los keyboards :

 prefs:root=General&path=Keyboard/KEYBOARDS 

Quería abrir el menu de Bluetooth en la aplicación de configuration y la ruta anterior (prefs: root = General & path = Bluetooth) no funcionó para mí. Lo que terminó trabajando para mí fue

 UIApplication.shanetworkingApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!) 

Asegúrate primero de definir primero el esquema de URL prefs .

Solución para iOS10. Funciona bien.

 NSURL *URL = [NSURL URLWithString:@"App-prefs:root=TWITTER"]; [[UIApplication shanetworkingApplication] openURL:URL options:@{} completionHandler:nil]; 

A partir de iOS10 puede usar

 UIApplication.shanetworkingApplication().openURL(NSURL(string:"App-Prefs:root")!) 

para abrir configuraciones generales

también puede agregar direcciones URL conocidas (puede verlas en la respuesta más votada) para abrir configuraciones específicas. Por ejemplo, el siguiente abre touchID y contraseña.

 UIApplication.shanetworkingApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!) 

Aquí hay algo más que encontré:

  1. Después de haber definido el esquema URL "prefs", "prefs: root = Safari & path = ContentBlockers" está trabajando en Simulator (iOS 9.1 inglés ), pero no funciona en Simulator (chino simplificado) . Simplemente salta a Safari, pero no Blockers de contenido. Si su aplicación es internacional, tenga cuidado.
    Actualización: No sé por qué, ahora ya no puedo saltar a ContentBlockers, el mismo código, la misma versión, no funciona ahora. Significado de la palabra

  2. En devcies reales (el mío es iPhone 6S y iPad mini 2), "Safari" debería ser "SAFARI" , "Safari" no funciona en un dispositivo real, "SAFARI" ahora está trabajando en un simulador:

     #if arch(i386) || arch(x86_64) // Simulator let url = NSURL(string: "prefs:root=Safari")! #else // Device let url = NSURL(string: "prefs:root=SAFARI")! #endif if UIApplication.shanetworkingApplication().canOpenURL(url) { UIApplication.shanetworkingApplication().openURL(url) } 
  3. Hasta el momento, no se encontraron diferencias entre el iPhone y el iPad.

Estoy actualizando una noticia aquí. El uso de 'prefs:' solo no lo rechaza Apple, lo probé y lo aprobé en la tienda de aplicaciones (en agosto de 2016). Gracias.

Funciona bien para las configuraciones de notificación de la aplicación en el IOS 10 (probado)

 if(&UIApplicationOpenSettingsURLString != nil){ [[UIApplication shanetworkingApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; } 

iOS 10

Use app-prefs:

 App-prefs:root=MOBILE_DATA_SETTINGS_ID 

Ver la esencia