2008-12-03 10 views
5

Estoy trabajando para agregar un paquete de configuración para mi aplicación como una forma económica de obtener una GUI según mis preferencias. ¿Es posible iniciar esto desde un botón en mi aplicación o mis usuarios siempre tendrán que acceder a él manualmente a través de la aplicación de configuración integrada?¿Cómo abro mi paquete de configuraciones desde mi aplicación?

Respuesta

9

Es posible que tengan que ir a la aplicación de configuración, dependiendo de cómo lo haga.

Consulte this document, la sección de Preferencias de aplicaciones. Aquí está la sección relevante de la introducción:

Agregar las preferencias de su aplicación a la aplicación Configuración es más apropiado para aplicaciones de estilo de productividad y en situaciones donde tiene valores de preferencia que generalmente se configuran una vez y luego rara vez cambian. Por ejemplo, la aplicación de correo usa estas preferencias para almacenar la información de la cuenta del usuario y la configuración de verificación de mensajes. Debido a que la aplicación de Configuración tiene soporte para mostrar las preferencias de forma jerárquica, manipular sus preferencias desde la aplicación Configuración también es más apropiado cuando tiene una gran cantidad de preferencias. Proporcionar el mismo conjunto de preferencias en su aplicación puede requerir demasiadas pantallas y puede causar confusión para el usuario.

Cuando su aplicación tiene solo unas pocas opciones o tiene opciones que el usuario podría querer cambiar regularmente, debe pensar cuidadosamente si la aplicación de Configuración es el lugar correcto para ellas. Por ejemplo, las aplicaciones de utilidad proporcionan opciones de configuración personalizadas en la parte posterior de su vista principal. Un control especial en la vista lo voltea para mostrar las opciones y otro control voltea la vista hacia atrás. Para aplicaciones simples, este tipo de comportamiento proporciona acceso inmediato a las opciones de la aplicación y es mucho más conveniente para el usuario que ir a Configuración.

actualización

El enlace ha caducado. This is a similar document en paquetes de configuración.

+0

El enlace ahora apunta a documentos inexistentes. –

1

No, no puede - ellos tendrán que salir de su aplicación e iniciar la configuración. Es un dolor, y como se indicó anteriormente, una decisión de diseño que tendrá que tomar.

4

Respondí mi propia pregunta: de hecho puede utilizar los NSUserDefaults para guardar sus propias preferencias de aplicaciones sin tener que integrarlas con la configuración del sistema.

Por ejemplo, mi aplicación es una aplicación de utilidad con una IU pequeña para un par de configuraciones en FlipSide (la vista que recibe el usuario al presionar el botón "i").

Tenga en cuenta que encontré esta información de dos fuentes.

  1. En una gran serie de informes de iPhone BootCamp, Scott Leberknight menciona de pasada que se le enseñó que un usuario de Aplicaciones de opciones por defecto pueden o no pueden integrar en la aplicación de configuración.

  2. El código de ejemplo de la página oficial del iPhone para el desarrollador BubbleLevel utiliza para almacenar las preferencias de la calibración de nivel (que se encuentra en la otra cara vista)

Éstos son los métodos en LevelAppDelegate.m que cargue la preferencia cuando se inicia la aplicación, y la guarda cuando se termina:

// Invoked after the application has been launched and initialized but before it has received its first event. 
- (void)applicationDidFinishLaunching:(UIApplication *)application { 
    // Set up the level view controller 
    levelViewController = [[LevelViewController alloc] init]; 
    [window addSubview:levelViewController.view]; 

    // Restore calibration for device 
    float restoredOffset = [[NSUserDefaults standardUserDefaults] floatForKey:BubbleLevelCalibrationOffsetKey]; 
    levelViewController.calibrationOffset = restoredOffset; 
} 


// Invoked immediately before the application terminates. 
- (void)applicationWillTerminate:(UIApplication *)application { 
    float calibrationOffset = levelViewController.calibrationOffset; 
    NSNumber *offset = [NSNumber numberWithFloat:calibrationOffset]; 
    [[NSUserDefaults standardUserDefaults] setObject:offset forKey:BubbleLevelCalibrationOffsetKey]; 
} 

supongo, sin embargo, que la respuesta correcta a la pregunta inicial es:

  1. No - se puede No ejecuto la interfaz de usuario de configuración desde su propia aplicación (no he visto ninguna manera de hacerlo, podría estar equivocado, supongo), pero estoy bastante seguro de que, incluso si pudiera ejecutar Configuraciones desde su aplicación, diga la forma en que una URL se puede usar para iniciar Safari: no podrá devolver a su aplicación desde la aplicación de Configuración, lo cual sería contrario al propósito).

  2. para la persistencia a nivel de preferencia (en contraposición a los datos de aplicaciones persistido en los documentos, bases de datos o caché) que tiene 2 opciones i) utilizar la aplicación de configuración del sistema para su edición ii) crear sus propios controles en su aplicación

En cualquier caso, puede utilizar NSUserDefaults para la persistencia real.

+0

Le pregunté a un ingeniero de iPhone sobre esto en una de las charlas técnicas y me dijo que no puedes hacer eso. Sugirió que presente un error para que Apple pueda determinar si esta es una solicitud popular. – bbrown

1

Acabo de ver que la aplicación Aka-aki me lleva directamente a la pantalla de notificación de inserción de la aplicación de configuración. Lo hizo la primera vez que lo lancé. Entonces debe ser posible. :)

+1

No me sorprendería que, al igual que con la ubicación, haya una solicitud de sistema operativo integrada la primera vez que una aplicación intente usar la inserción. –

2

No tengo conocimiento de ninguna forma de ejecutar Settings.app desde su aplicación. Sin embargo, ¿por qué no integrar la configuración directamente en tu aplicación? Puede usar InAppSettingsKit para hacerlo fácilmente.

5

Para IOS5 puede abrir directamente los ajustes:

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

+0

Desafortunadamente, no funciona en iOS 6 o 7 :( – sup

Cuestiones relacionadas