iPhone poniendo NSUserDefaults a cero cuando la aplicación está cerrada o en segundo plano

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

  •  30-09-2019
  •  | 
  •  

Pregunta

quiero eliminar todas las variables guardadas en todos los campos de NSUserDefaults cada vez que la aplicación se cierra o se ejecutan en segundo plano para una cierta cantidad de tiempo - por ejemplo 5 minutos

.

He intentado añadir una línea al delegado de la aplicación de applicationDidFinishLaunching que es similar al siguiente:

if (UIApplicationStateBackground == TRUE) {
    NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];
}

I También se ha añadido sólo esta porción a la applicationWillTerminate:

NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];

Nada de esto parece estar funcionando y no tengo ni idea de cómo establecer una condición de '5 minutos si han superado la aplicación de estar en el fondo, eliminar las variables NSUserDefaults' -? Cualquier ayuda

¿Fue útil?

Solución

Yo recomendaría para eliminar el objeto en lugar de establecer a cero.

- (void)removeObjectForKey:(NSString *)defaultName;

El comportamiento normal de NSUserDefaults es volver a cero cuando no hay ninguna clave responden a la consulta, por lo que creo que es mejor seguir la misma regla y no almacenar nula para una cierta clave.

Espero que ayuda.

Otros consejos

Tal vez usted debe utilizar applicationDidEnterBackground :. Salida esta página doc manzana.

Yo haría lo siguiente: En el - (void)applicationWillResignActive:(UIApplication *)application llamada delegado de UIApplication me ahorraría una marca de tiempo cuando la aplicación entró en el fondo. En este caso no tiene que comprobar si la aplicación va a un segundo plano o si acaba de ser interrumpida por ejemplo, un SMS, pero el golpe de usuario anulan y continúa utilizando la aplicación.

Cuando se inicia la aplicación de nuevo implementar código en otro método delegado de UIApplication - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions para determinar cuánto tiempo ha estado inactivo y limpie los UserDefaults o no dependiendo de la duración.

Para obtener más información de la solicitud a estar inactivo y el relanzamiento de comprobar este documento de la documentación de Apple http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html# // apple_ref / doc / uid / TP40007072-CH3-SW10

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