iPhone poniendo NSUserDefaults a cero cuando la aplicación está cerrada o en segundo plano
-
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
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