Abrir la aplicación de configuración desde otra aplicación

180

Bien, sé que hay muchas preguntas al respecto, pero todas son de hace mucho tiempo.

Entonces. Sé que es posible porque la aplicación Map lo hace.

En la aplicación Mapa, si apago la localización de esta aplicación, me envía un mensaje y, si presiono OK, se abrirá la "Aplicación de configuración". Y mi pregunta es, ¿cómo es esto posible? ¿Cómo puedo abrir la "Configuración de la aplicación" desde mi propia aplicación?

Básicamente, debo hacer lo mismo, si el usuario apaga la ubicación de mi aplicación, entonces le mostraré un mensaje que dice algo que abrirá la "Configuración de la aplicación"

FelipeDev.-
fuente
Comprueba este stackoverflow.com/questions/377102/…
Yatheesha BL
1
Puede abrir la aplicación de configuración mediante programación en iOS8 (pero no en versiones inferiores de iOS) .code a continuación en las respuestas.
Karan Dua

Respuestas:

291

Según lo mencionado por Karan Dua esto es ahora posible en iOS8 utilizando UIApplicationOpenSettingsURLStringver documentación de Apple .

Ejemplo:

Swift 4.2

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)

En Swift 3:

UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)

En Swift 2:

UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

En el objetivo-C

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

Antes de iOS 8:

No puedes. Como dijiste, esto se ha cubierto muchas veces y la ventana emergente que te pide que actives los servicios de ubicación es suministrada por Apple y no por la aplicación en sí. Es por eso que puede abrir la aplicación de configuración.

Aquí hay algunas preguntas y artículos relacionados:

¿Es posible abrir la aplicación de configuración con openURL?

Abrir mediante programación la aplicación de configuración (iPhone)

¿Cómo puedo abrir la aplicación Configuración cuando el usuario presiona un botón?

iPhone: abrir el panel de preferencias de la aplicación desde la aplicación

Abra UIPickerView haciendo clic en una entrada en las preferencias de la aplicación - ¿Cómo?

¿Abrir la aplicación de configuración?

iOS: estás haciendo ajustes incorrectos

Joe
fuente
Si necesita una respuesta más autorizada, puede intentar preguntar en los foros de desarrolladores de Apple < developer.apple.com/devforums > o presentar un error en < developer.apple.com/bugreporter >: si se trata de un problema conocido, debería volver como "se comporta correctamente" o un duplicado del error original.
Vincent Gable
2
Esto ahora es posible en iOS 8 usando [NSURL URLWithString: UIApplicationOpenSettingsURLString]
LightningStryk
1
en swift 3 - UIApplication.shared.openURL (URL (string: UIApplicationOpenSettingsURLString)!)
GMHSJ
1
Tenga cuidado al usar este método. Lo usé y unos meses más tarde mi aplicación fue rechazada con el siguiente mensaje de Apple: Su aplicación usa el esquema de URL no público "prefs: root =", que es una entidad privada. El uso de API no públicas no está permitido en la App Store porque puede conducir a una mala experiencia del usuario en caso de que estas API cambien. Continuar usando u ocultando API no públicas en futuras presentaciones de esta aplicación puede dar lugar a la cancelación de su cuenta de desarrollador de Apple, así como a la eliminación de todas las aplicaciones asociadas de la App Store.
Nick Kirsten
133

De la respuesta de @Yatheeshaless :

Puede abrir la aplicación de configuración mediante programación en iOS8, pero no en versiones anteriores de iOS.

Rápido:

   UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

Swift 4:

if let url = NSURL(string: UIApplicationOpenSettingsURLString) as URL? {
    UIApplication.shared.openURL(url)
}

Swift 4.2 (BETA):

if let url = NSURL(string: UIApplication.openSettingsURLString) as URL? {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

C objetivo:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Karan Dua
fuente
23
Esto parece abrir la sección de su aplicación de la aplicación Configuración. Los usuarios deberán presionar Atrás varias veces para ver la pantalla principal de Configuración.
wjl
1
Pequeña corrección ..[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Paito
10
@Paito La línea anterior se dirige a la configuración privada de la aplicación . ¿Hay alguna manera de dirigirse a la sección de privacidad de la configuración del dispositivo? Por favor comente si lo sabe. Esta redirección es posible, ya que la encontré en la aplicación de mapas donde se dirige a la configuración de ubicación en la sección de privacidad.
Pavan Kotesh
1
Pequeña corrección rápida: UIApplication.sharedApplication (). OpenURL (NSURL (string: UIApplicationOpenSettingsURLString)!)
vbezhenar
1
@ PavanKotesh: Sí, pero la configuración de la aplicación tendrá lo que necesita permiso, en mi caso, necesitaba acceso a los contactos, que aparecen en la configuración de la aplicación con el código anterior.
Tejas K
58

¡¡SI!! puede iniciar la pantalla de Configuración del dispositivo, lo he probado en iOS 9.2

Paso 1. necesitamos agregar esquemas de URL

Vaya a Configuración del proyecto -> Información -> Tipos de URL -> Agregar nuevos esquemas de URL

ingrese la descripción de la imagen aquí

Paso 2. Inicie la configuración mediante programación gracias a @davidcann

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

También podemos lanzar subpantallas como Música, Ubicación, etc., simplemente usando el nombre propio

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=MUSIC"]];

Vea esta lista completa de nombres aquí compartida por Henri Normak


Actualizar:

Según el comentario, todos quieren saber qué sucede después de este cambio en el estado de envío de mi solicitud.

Entonces YES!! I got successful update submission and application is available on store without any complain.

Solo para confirmar, acabo de descargar esta mañana y deshabilité los servicios de ubicación, y luego inicié la aplicación, que me pidió permiso de ubicación y luego apareció mi ventana emergente de alerta para enviarme a configuración -> página de servicios de ubicación -> Habilitado -> ¡¡Eso es!!

[AVISO: Su aplicación podría ser rechazada ... incluso si está aprobada, puede rechazarse en una versión futura si usa este método ...] 4

swiftBoy
fuente
Gracias, funciona para mí, también en iOS 6 y 7. ¿Ya intentaste pasarlo por el proceso de revisión de Apple?
Flo
1
@Flo te lo haré saber, porque actualmente he presionado para la prueba beta.
swiftBoy
1
iOS 9.3. Trabajado como un encanto. Incluso veo "Volver a [nombre de mi aplicación]" dentro de la aplicación de configuración. ¡Sin duda, esto es compatible porque veo muchas otras aplicaciones que hacen este tipo de cosas!
EricWasTaken
13
En iOS 10, la nueva url no es "prefs: root = ...." sino "App-Prefs: root = ...".
Drico
1
Su aplicación podría ser rechazada ... incluso si está aprobada, puede ser rechazada en futuras versiones si utiliza este método ...
Mihir Mehta
18

Puede usar esto en iOS 5.0 y versiones posteriores: esto ya no funciona.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
davidcann
fuente
3
@ MarkGranoff No, parece ser técnicamente indocumentado, pero no es tan malo como una API indocumentada normal, ya que es solo un esquema de URL. Puede verificarlo con canOpenURL: primero. Además, hay un hilo al respecto aquí: devforums.apple.com/message/543818
davidcann
3
Puede acceder a diferentes áreas en la configuración de acuerdo con este artículo . Por ejemplo, esta URL lo llevará a la configuración de Bluetoothprefs:root=General&path=Bluetooth
programa el
1
Obtuve una aplicación rechazada por usar una API privada porque estaba abriendo la url: @ "prefs: root = Brightness". Por lo general, no documentado significa privado.
Guillaume
44
Apple ha declarado que esta no era una API pública y ya no es compatible. Hay un error registrado en este tema, número 11253669.
Don Wilson
2
Acabo de ver que esto funciona en la aplicación Strava. Apague Bluetooth y luego enciéndalo en la aplicación. Luego pide acceder a la aplicación de configuración y va directamente a la configuración de Bluetooth. Esto es para iOS5.1. ¿Hay alguna manera de averiguar qué esquema están usando?
Hormigas
14

actualización de iOS 10

Apple cambió el método para abrir asíncrono en el hilo principal. Sin embargo, a partir de ahora solo es posible abrir la configuración de la aplicación en la configuración nativa.

[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];

actualización de iOS 9

Ahora es posible ir directamente al menú de configuración secundaria. Sin embargo, se debe crear un esquema de URL. Se puede hacer de dos maneras:

  1. XCode: lo encontrará en Target, Info, URL Scheme. Luego, simplemente escriba prefs.
  2. Agregar directamente a * -Info.plist. Agregue lo siguiente: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>prefs</string> </array> </dict> </array>

Entonces el código:

Rápido

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=General&path=Keyboard")!)

C objetivo

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

Guyromb
fuente
1
Probé la solución iOS 10.x, y no funcionó para mí, no pasa nada.
Mark Peters
@ MarkPeters, ¿ya descubriste alguna manera? Podría ser de gran ayuda. Gracias.
Roohul Poolak
No, no lo he hecho. Todavía no sé si es un error de iOS o si Apple acaba de eliminar la función.
Mark Peters
Creo que todavía trabajan con extensiones. Ex aplicación está Magic Launcheren la tienda de aplicaciones .
Trident
4

En Swift 3 / iOS 10+ esto ahora parece

if let url = URL(string: "App-Prefs:root=LOCATION_SERVICES") {
    UIApplication.shared.open(url, completionHandler: .none)
}
Damo
fuente
¿Cómo llegar a la pantalla de notificación? porque if let url = URL (string: "App-Prefs: root = NOTIFICATIONS_ID & path = io.artup.artup") {if #available (iOS 10.0, *) {UIApplication.shared.open (url, completeHandler: .none)} } pero fui a la notificación en iPhone 6, ¿no en iPhone 7 plus?
user3804063
3
Esto hará que su aplicación sea rechazada. Lo ponen bajo uso de API privada.
Bersaelor
He rechazado mi aplicación, usando este "App-Prefs: root"
Malder
1
Solo enfatice lo que otros mencionaron aquí, no use este método, hará que su aplicación sea rechazada. El envío repetido de la aplicación con dicha opción cerrará su cuenta de desarrollador.
CodeBrew
4

Swift 3:

guard let url = URL(string: UIApplicationOpenSettingsURLString) else {return}
if #available(iOS 10.0, *) {
  UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
  // Fallback on earlier versions
  UIApplication.shared.openURL(url)
}
Duy Doan
fuente
4

Parece que puede usar la prefs:<area>URL para abrir la configuración e ir a áreas específicas. Apple podría cambiarlos y romper su aplicación, así que siempre verifique si puede abrirlos primero.

De este artículo han enumerado algunos de ellos para iOS 13.1:

URL de configuración

iCloud

  • iCloud: prefs:root=CASTLE
  • Copia de seguridad de iCloud: prefs:root=CASTLE&path=BACKUP

Radios Inalámbricas

  • Wifi: prefs:root=WIFI
  • Bluetooth: prefs:root=Bluetooth
  • Celular: prefs:root=MOBILE_DATA_SETTINGS_ID

Punto de acceso personal

  • Punto de acceso personal: prefs:root=INTERNET_TETHERING
  • Punto de acceso personal Sharing Compartir en familia: prefs:root=INTERNET_TETHERING&path=Family%20Sharing
  • Punto de acceso personal Password Contraseña de Wi-Fi: prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

VPN

  • VPN: prefs:root=General&path=VPN

Notificaciones

  • Notificaciones: prefs:root=NOTIFICATIONS_ID
  • Notificaciones ⇾ Sugerencias Siri: prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

Suena

  • Sonidos: prefs:root=Sounds
  • Tono de llamada: prefs:root=Sounds&path=Ringtone

No molestar

  • No molestar: prefs:root=DO_NOT_DISTURB
  • No molestar ⇾ Permitir llamadas desde: prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

Tiempo de pantalla

  • Tiempo de pantalla: prefs:root=SCREEN_TIME
  • Tiempo de pantalla ime Tiempo de inactividad: prefs:root=SCREEN_TIME&path=DOWNTIME
  • Tiempo de pantalla Lim Límites de la aplicación: prefs:root=SCREEN_TIME&path=APP_LIMITS
  • Tiempo de pantalla ⇾ Siempre permitido: prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

General

  • General: prefs:root=General
  • General ⇾ Acerca de: prefs:root=General&path=About
  • General Update Actualización de software: prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • General ⇾ CarPlay: prefs:root=General&path=CARPLAY
  • General ⇾ Actualización de la aplicación de fondo: prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
  • General ⇾ Multitarea (solo iPad): prefs:root=General&path=MULTITASKING
  • General ⇾ Fecha y hora: prefs:root=General&path=DATE_AND_TIME
  • General ⇾ Teclado: prefs:root=General&path=Keyboard
  • General ⇾ Teclado ⇾ Teclados: prefs:root=General&path=Keyboard/KEYBOARDS
  • General ⇾ Teclado ⇾ Teclado de hardware: prefs:root=General&path=Keyboard/Hardware%20Keyboard
  • General ⇾ Teclado ⇾ Reemplazo de texto: prefs:root=General&path=Keyboard/USER_DICTIONARY
  • General ⇾ Teclado ⇾ Teclado de una mano: prefs:root=General&path=Keyboard/ReachableKeyboard
  • General ⇾ Idioma y región: prefs:root=General&path=INTERNATIONAL
  • General ⇾ Diccionario: prefs:root=General&path=DICTIONARY
  • General ⇾ Perfiles: prefs:root=General&path=ManagedConfigurationList
  • General ⇾ Restablecer: prefs:root=General&path=Reset

Centro de control

  • Centro de control: prefs:root=ControlCenter
  • Centro de control ⇾ Personalizar controles: prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

Monitor

  • Monitor: prefs:root=DISPLAY
  • Pantalla Lock Bloqueo automático: prefs:root=DISPLAY&path=AUTOLOCK
  • Pantalla ⇾ Tamaño del texto: prefs:root=DISPLAY&path=TEXT_SIZE

Accesibilidad

  • Accesibilidad: prefs:root=ACCESSIBILITY

Fondo de pantalla

  • Fondo de pantalla: prefs:root=Wallpaper

Siri

  • Siri prefs:root=SIRI

Lápiz de manzana

  • Apple Pencil (solo iPad): prefs:root=Pencil

ID de cara

  • Identificación de la cara: prefs:root=PASSCODE

SOS de emergencia

  • SOS de emergencia: prefs:root=EMERGENCY_SOS

Batería

  • Batería: prefs:root=BATTERY_USAGE
  • Batería Health Estado de la batería (solo iPhone): prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

Intimidad

  • Intimidad: prefs:root=Privacy
  • Privacidad ⇾ Servicios de ubicación: prefs:root=Privacy&path=LOCATION
  • Privacidad ⇾ Contactos: prefs:root=Privacy&path=CONTACTS
  • Privacidad ⇾ Calendarios: prefs:root=Privacy&path=CALENDARS
  • Privacidad ⇾ Recordatorios: prefs:root=Privacy&path=REMINDERS
  • Privacidad ⇾ Fotos: prefs:root=Privacy&path=PHOTOS
  • Privacidad ⇾ Micrófono: prefs:root=Privacy&path=MICROPHONE
  • Privacidad ⇾ Reconocimiento de voz: prefs:root=Privacy&path=SPEECH_RECOGNITION
  • Privacidad ⇾ Cámara: prefs:root=Privacy&path=CAMERA
  • Privacidad ⇾ Movimiento: prefs:root=Privacy&path=MOTION\

Tienda de aplicaciones

  • Tienda de aplicaciones: prefs:root=STORE
  • App Store Downloads Descargas de aplicaciones: prefs:root=STORE&path=App%20Downloads
  • App Store ⇾ Video reproducción automática: prefs:root=STORE&path=Video%20Autoplay

Billetera

  • Billetera: prefs:root=PASSBOOK

Contraseñas y Cuentas

  • Contraseñas y cuentas: prefs:root=ACCOUNTS_AND_PASSWORDS
  • Contraseñas y cuentas ⇾ Obtener nuevos datos: prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
  • Contraseñas y cuentas ⇾ Agregar cuenta: prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT

Correo

  • Correo: prefs:root=MAIL
  • Correo ⇾ Vista previa: prefs:root=MAIL&path=Preview
  • Correo Options Opciones de deslizamiento: prefs:root=MAIL&path=Swipe%20Options
  • Correo ⇾ Notificaciones: prefs:root=MAIL&path=NOTIFICATIONS
  • Correo ⇾ Bloqueado: prefs:root=MAIL&path=Blocked
  • Mail ⇾ Acción de subproceso silenciado: prefs:root=MAIL&path=Muted%20Thread%20Action
  • Correo der Opciones de remitente bloqueado: prefs:root=MAIL&path=Blocked%20Sender%20Options
  • Correo ⇾ Marcar direcciones: prefs:root=MAIL&path=Mark%20Addresses
  • Correo ⇾ Aumentar el nivel de cotización: prefs:root=MAIL&path=Increase%20Quote%20Level
  • Correo ⇾ Incluir archivos adjuntos con respuestas: prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
  • Correo ⇾ Firma: prefs:root=MAIL&path=Signature
  • Correo Account Cuenta predeterminada: prefs:root=MAIL&path=Default%20Account

Contactos

  • Contactos: prefs:root=CONTACTS

Calendario

  • Calendario: prefs:root=CALENDAR
  • Calendario ⇾ Calendarios alternativos: prefs:root=CALENDAR&path=Alternate%20Calendars
  • Calendario ⇾ Sincronización: prefs:root=CALENDAR&path=Sync
  • Calendario Times Horas de alerta predeterminadas: prefs:root=CALENDAR&path=Default%20Alert%20Times
  • Calendario Calendar Calendario predeterminado: prefs:root=CALENDAR&path=Default%20Calendar

Notas

  • Notas: prefs:root=NOTES
  • Notas Account Cuenta predeterminada: prefs:root=NOTES&path=Default%20Account
  • Notas ⇾ Contraseña: prefs:root=NOTES&path=Password
  • Notas ⇾ Ordenar notas por: prefs:root=NOTES&path=Sort%20Notes%20By
  • Notas ⇾ Las nuevas notas comienzan con: prefs:root=NOTES&path=New%20Notes%20Start%20With
  • Notas ⇾ Ordenar elementos marcados: prefs:root=NOTES&path=Sort%20Checked%20Items
  • Notas ⇾ Líneas y cuadrículas: prefs:root=NOTES&path=Lines%20%26%20Grids
  • Notas ⇾ Notas de acceso desde la pantalla de bloqueo: prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

Recordatorios

  • Recordatorios: prefs:root=REMINDERS
  • Recordatorios List Lista predeterminada: prefs:root=REMINDERS&path=DEFAULT_LIST

Memos de voz

  • Memos de voz: prefs:root=VOICE_MEMOS

Teléfono

  • Teléfono: prefs:root=Phone

Mensajes

  • Mensajes: prefs:root=MESSAGES

FaceTime

  • FaceTime: prefs:root=FACETIME

Mapas

  • Mapas: prefs:root=MAPS
  • Mapas ⇾ Conducción y navegación: prefs:root=MAPS&path=Driving%20%26%20Navigation
  • Mapas ⇾ Tránsito: prefs:root=MAPS&path=Transit

Brújula

  • Brújula: prefs:root=COMPASS

Medida

  • Medida: prefs:root=MEASURE

Safari

  • Safari: prefs:root=SAFARI
  • Safari ⇾ Bloqueadores de contenido: prefs:root=SAFARI&path=Content%20Blockers
  • Safari ⇾ Descargas: prefs:root=SAFARI&path=DOWNLOADS
  • Safari ⇾ Cerrar pestañas: prefs:root=SAFARI&path=Close%20Tabs
  • Safari ⇾ Borrar historial y datos: prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
  • Safari Zoom Zoom de página: prefs:root=SAFARI&path=Page%20Zoom
  • Safari ⇾ Solicitar sitio web de escritorio: prefs:root=SAFARI&path=Request%20Desktop%20Website
  • Safari ⇾ Reader: prefs:root=SAFARI&path=Reader
  • Safari ⇾ Cámara: prefs:root=SAFARI&path=Camera
  • Safari ⇾ Micrófono: prefs:root=SAFARI&path=Microphone
  • Safari ⇾ Ubicación: prefs:root=SAFARI&path=Location
  • Safari ⇾ Avanzado: prefs:root=SAFARI&path=ADVANCED

Noticias

  • Noticias: prefs:root=NEWS

Salud

  • Salud: prefs:root=HEALTH

Atajos

  • Atajos: prefs:root=SHORTCUTS

Música

  • Música: prefs:root=MUSIC
  • Música ⇾ Datos celulares: prefs:root=MUSIC&path=com.apple.Music:CellularData
  • Música ⇾ Optimizar almacenamiento: prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
  • Música ⇾ EQ: prefs:root=MUSIC&path=com.apple.Music:EQ
  • Música ⇾ Límite de volumen: prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

televisión

  • Configuración ⇾ TV: prefs:root=TVAPP

Fotos

  • Fotos: prefs:root=Photos

Cámara

  • Cámara: prefs:root=CAMERA
  • Cámara ⇾ Grabar video: prefs:root=CAMERA&path=Record%20Video
  • Cámara ⇾ Grabar cámara lenta: prefs:root=CAMERA&path=Record%20Slo-mo

Libros

  • Libros: prefs:root=IBOOKS

Centro de juegos

  • Centro de juegos: prefs:root=GAMECENTER
Iain Smith
fuente
3

UIApplicationOpenSettingsURLStringesto solo funcionará si previamente ha permitido algún permiso. Por ejemplo, Ubicación, Foto, Contacto, Acceso a notificaciones push. Entonces, si no tiene dichos permisos del usuario:

Si iOS 10 o superior ,

Se abrirá la Configuración pero luego se bloqueará. La razón, no hay nada en la configuración de su aplicación.

El siguiente código abrirá la configuración de su aplicación dentro de la Configuración de iOS.

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

Debido a la falta de disponibilidad del dispositivo, no pude verificar esto en iOS <10.

Además, pude encontrar el siguiente código de alguna esencia y también funciona bien en iOS 10. Pero no estoy seguro de si esto será aprobado por el equipo de revisión de Apple o no.

https://gist.github.com/johnny77221/bcaa5384a242b64bfd0b8a715f48e69f

Hemang
fuente
3

En Swift 3 todo lo que necesitaba es esto (aquí, por ejemplo, redirigir a las notificaciones de mi aplicación):

if let url = URL(string: "App-Prefs:root=NOTIFICATIONS_ID&path=your app bundleID") {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, completionHandler: .none)
    } else {
        // Fallback on earlier versions
    }
}

Fuente: phynet gist .

Esto funcionó conmigo solo cuando la configuración está en segundo plano. Te redirigirá a la configuración de notificaciones de tu aplicación, pero si la configuración no se ejecutaba en segundo plano, solo te redirigirá a la configuración de notificaciones en general.

ynamao
fuente
1

Puede usar el siguiente código para ello.

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Som
fuente
1

SWIFT 4.0

'openURL' quedó en desuso en iOS 10.0: utilice openURL: opciones: completeHandler: en su lugar

UIApplication.shared.open(URL.init(string: UIApplicationOpenSettingsURLString)! , options: [:], completionHandler: nil)
Harshil Kotecha
fuente
1

Swift 4

Prefiero abrir la configuración de una manera más segura,

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

    UIApplication.shared.open(settingUrl)
}
else {
    print("Setting URL invalid")
}
Sazzad Hissain Khan
fuente
0

Swift Puede usar la siguiente función para abrir la aplicación de configuración con la página Bluetooth

func openSettingsApp(){
    if let settings = NSURL(string: "prefs:root=Bluetooth") {
        UIApplication.sharedApplication().openURL(settings)
    }
}

Nuevamente, esto no abriría la Configuración de la aplicación. Esto abriría la aplicación de configuración con Bluetooth, ya que es una conexión profunda con bluetooth.

Alix
fuente
0

Probado con iOS 10. Trabajando

NSArray* urlStrings = @[@"prefs:root=WIFI", @"App-Prefs:root=WIFI"];
for(NSString* urlString in urlStrings){
NSURL* url = [NSURL URLWithString:urlString];
if([[UIApplication sharedApplication] canOpenURL:url]){
    [[UIApplication sharedApplication] openURL:url];
    break;
}
}

Happy Coding :)

Praveen Sharma
fuente
3
Esto hará que su aplicación sea rechazada. Acabo de pasarme a mí.
Bersaelor
Es así, pero esta línea de código lo llevará directamente a la ubicación deseada
Praveen Sharma el
1
Sí, te llevará allí. No digo que no funcione, solo estoy señalando que lo rechazarán durante la revisión de la aplicación. "prefs: root" es un esquema de URL privado de acuerdo con lo que nos dijo el equipo de revisión. (Puede que tengas suerte y no se den cuenta por un tiempo, tuvimos la función por un tiempo y pasamos varias críticas antes de que el crítico lo notara)
Bersaelor
Gracias por la información, intentaría otra cosa, pero en este momento estoy atrapado en la conectividad VPN, buscando una solución para esto.
Praveen Sharma
0

Para agregar a la respuesta aceptada: (de la documentación del desarrollador de Apple) "Cuando abre la URL creada a partir de esta cadena (openSettingsURLString), el sistema inicia la aplicación Configuración y muestra la configuración personalizada de la aplicación, si tiene alguna". Por lo tanto, si desea abrir la configuración de su aplicación, cree su propia configuración.bundle.

Jovan Stankovic
fuente
-1

Agregue esto a su clase,

 public class func showSettingsAlert(title:String,message:String,onVC viewController:UIViewController,onCancel:(()->())?){
            YourClass.show2ButtonsAlert(onVC: viewController, title: title, message: message, button1Title: "Settings", button2Title: "Cancel", onButton1Click: {
                if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString){
                    UIApplication.sharedApplication().openURL(settingsURL)
                }
                }, onButton2Click: {
                    onCancel?()
            })
        }

 public class func show2ButtonsAlert(onVC viewController:UIViewController,title:String,message:String,button1Title:String,button2Title:String,onButton1Click:(()->())?,onButton2Click:(()->())?){
            dispatch_async(dispatch_get_main_queue()) {
                let alert : UIAlertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)

                alert.addAction(UIAlertAction(title: button1Title, style:.Default, handler: { (action:UIAlertAction) in
                    onButton1Click?()
                }))

                alert.addAction(UIAlertAction(title: button2Title, style:.Default, handler: { (action:UIAlertAction) in
                    onButton2Click?()
                }))

                viewController.presentViewController(alert, animated: true, completion: nil)
            }
        }

Llama así,

YourClass.showSettingsAlert("App would like to access camera", message: "App would like to access camera desc", onVC: fromViewController, onCancel: {
  print("canceled")
})
Mohammad Zaid Pathan
fuente