iOS: no se puede establecer uiapplication idletimerDisable a sí en didfinishlaunchingwithOptions

StackOverflow https://stackoverflow.com/questions/7355458

Pregunta

Tengo una aplicación para iPad donde el usuario puede establecer el IdletImerDisable en sí o no a través de un conmutador en preferencias. Esa parte funciona bien. Sin embargo, inicialmente configurarlo en sí en el método de Did FinishLaunchingWithOptions de la aplicación delegada si es la primera vez que la aplicación se ejecuta no funciona (el dispositivo se queda en autos dormido).

He probado el truco de configurarlo en No First, luego sí, como se describe en otros hilos en vano. Todos los demás aspectos de las preferencias (StandardUserDefaults) también funcionan bien.

Aquí está el código relevante:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // if app run for the first time, set these as defaults
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    if (![prefs objectForKey:@"autoSleep"]) {
    // this conditional code runs, as traced using NSLog   
    [prefs setBool:YES forKey:@"autoSleep"];
    application.idleTimerDisabled = NO;
    application.idleTimerDisabled = YES;
    }
}
¿Fue útil?

Solución

Utilizar el registerDefaults método de NSUserDefaults En lugar de probar si ObjectForKey es nulo.

Ver también Detalles sobre esto en la guía de programación relevante. Una vez que tenga los valores predeterminados de registro de registro utilizando RegistroDefaults (en su caso el valor NO para tu "autoSleep" clave), está asegurado de que tendrá un valor en esta clave, ya sea el que el usuario establece en la configuración de la aplicación ... o esta predeterminada si el usuario aún no ha establecido un valor.

Por lo tanto, debe resolver su problema, ya que siempre tendrá un valor para su autoSleep clave, ya sea el predeterminado o el proporcionado por el usuario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top