iPhone настроек nsuserdefaults к nil, когда приложение закрыто или в фоновом режиме
-
30-09-2019 - |
Вопрос
Я хочу устранить все переменные, сохраненные во всех полях NsuserDefaults, когда приложение закрыто или работает на заднем плане в течение определенного количества времени - скажи 5 минут.
Я пытался добавить линию в приложение делегат ApplicationDIDFINISHLAUCHING, который выглядит так:
if (UIApplicationStateBackground == TRUE) {
NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];
[profiles setObject:nil forKey:@"name1"];
[profiles synchronize];
}
Я также добавил только эту часть к Applicationwillterminate:
NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];
[profiles setObject:nil forKey:@"name1"];
[profiles synchronize];
Ничего из этого, кажется, не работает, и я понятия не имею, как установить состояние «Если 5 минут превзошло приложение, находящееся на заднем плане, удалить переменные nsuserdefaults» - любая помощь?
Решение
Я бы порекомендовал удалить объект вместо того, чтобы установить его в Nil.
- (void)removeObjectForKey:(NSString *)defaultName;
Нормальное поведение nsuserdefaults - вернуть ноль, когда нет ключевого соответствия запроса, поэтому я полагаю, что лучше следовать тому же правилу и не хранить Nil для определенного ключа.
Надеюсь, поможет.
Другие советы
Может быть, вы должны использовать ApplicationDidenterBackgroundground :. Проверить это Страница Apple DOC.
Я бы сделал следующее: в деле делегата - (void)applicationWillResignActive:(UIApplication *)application
Из Uiacplication я бы сохранил временную метку, когда приложение вошло в фоновом режиме. В этом случае вам не нужно проверять, идет ли приложение на фоновом режиме или, если он просто прерывается, например, SMS, но пользователь ударит отменить и продолжает использовать приложение.
Когда приложение снова запускается, реализуйте код в другом делегатере метод UIAPLING - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Чтобы определить, как долго вы были неактивны и протрите userdefaults или не в зависимости от продолжительности.
Для получения дополнительной информации о приложении становится неактивным и отменив проверку этого документа документации Apple http://developer.apple.com/iphone/Library/documentation/iphone/coneplectual/iphoneoSprammammingGuide/iphoneAsprammingGuide/COREAP.ML#//APHLEAPLEP/DOC/UID/TP40007072-CH3-SW10.