La configuración de nuestra aplicación en el menu general

Seguro que en múltiples ocasiones al entrar en la configuración de nuestro teléfono hemos visto listadas un montón de aplicaciones en la parte inferior de la pantalla. Esto es así porque a la hora de proporcionar un punto para configurar nuestra aplicación tenemos dos opciones, una es meterla dentro de la propia aplicación y la otra es integrarla en el menú de configuración del sistema.

Sin duda la opción de hacerlo nosotros en la aplicación puede parecer a priori la mas fácil, pues no tenemos que aprender una nueva forma de hacer las cosas, pero como veremos en esta entrada, integrarse en el menú global de configuración es sencillo y de esta manera nos quitaremos el gestionar una pantalla mas dentro de nuestro programa.

La única limitación que se nos impone es que las opciones que queramos configurar se adapten a los controles que el sistema nos ofrece. Aunque sinceramente, la mayoría de las opciones suelen ser cajas de texto, sliders o booleanos de ON/OFF.

El primer paso para añadir nuestro programa al menú de configuración, es incorporar a nuestro proyecto un bundle de tipo «settings», dicho bundle va a tener uno o varios ficheros de tipo plist donde vamos a especificar los elementos de configuración de nuestra aplicación.

Normalmente la opción mas sencilla será usar el editor de ficheros plist integrado que viene en el xcode, pues en el caso de los settings, automáticamente nos detectará el tipo de elemento y nos mostrará las opciones disponibles.

Aún así, si nos gusta mirar el código de las cosas 😉 como seguro que es el caso, podemos ver el XML que se genera y tocar ahí mismo los valores de configuración de cada componente. Como podemos ver en la siguiente captura.

Para mas información sobre las propiedades de cada elemento, podemos visitar la documentación oficial de Apple, donde se describen todas posibilidades a la hora de describir la interfaz de configuración.

Una de las cosas mas interesantes es que no estamos limitados a una sola pantalla de configuración, podemos añadir una estructura jerárquica de pantallas de configuración.

Para ello, uno de los elementos del fichero plist, es «PSGroupSpecifier», que nos permite especificar otro fichero plist que será el que contenga la pantalla en el siguiente nivel de jerarquía, así podemos crear la configuración tan compleja como la necesitemos

Una vez que tenemos nuestro bundle listo, el siguiente paso es recuperar esos valores en nuestro código. Una vez mas, este proceso es bastante sencillo gracias a la clase NSUserDefaults. Este método tiene los típicos getters y setters para obtener y configurar los valores de la configuración, así por ejemplo el código para recuperar el valor del campo de configuración que describimos en el plist seria:

NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
NSLog(@"Players: %@",[settings integerForKey:@"players"]];
NSLog(@"Active Push Notifications: %@", [settings boolForKey:@"enable_push"]

Como hemos visto, integrar nuestra aplicación en el menú global de configuración es tremendamente sencillo, y gracias a su potencia a la hora de describir nuestros parámetros de configuración, nos va a ahorrar el hacer dichas pantallas dentro de nuestra aplicación.

Deja un comentario