Настройка NSTimer для проверки, неактивно ли приложение

У меня есть приложение, которое требует входа пользователя для используй это. У меня есть значение X минут, которое, если приложение было неактивным в течение этого времени, выйдет из системы, поэтому, когда они запустят приложение в следующий раз, им придется снова ввести свои данные для входа.

Есть ли простой и эффективный способ сделать это? Я думаю, мне нужно добавить NSTimer в мой AppDelegate и добавить логику в метод didFinishLaunchingWithOptions . У меня минуты хранятся как int в NSUserDefaults .

Например, если приложение не использовалось в течение 60 минут , выведите пользователя из системы (тогда на самом деле это не приведет к выходу пользователя из системы, но при следующем запуске приложения оно будет выйдите из системы и покажите экран входа в систему и т. д.).

Изменить:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSDictionary *userContextDictionary = [dataSource fetchUserContext];
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setDouble:[[userContextDictionary valueForKey:@"autologout_idle_timeout"] doubleValue] forKey:@"timeoutLength"];  
    double timeDifference = ([[NSDate date] timeIntervalSince1970] - [userDefaults doubleForKey:@"Close Time"]) / 60;

    if (timeDifference > [userDefaults doubleForKey:@"timeoutLength"]) {
         NSLog(@"Timeout Hit");
     } else {
         NSLog(@"No Timeout");
     }

- (void)applicationDidEnterBackground:(UIApplication *)application
{    
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    double currentTime = [[NSDate date] timeIntervalSince1970];
    [userDefaults setDouble:currentTime forKey:@"Close Time"];
}
0
задан Jon 26 November 2011 в 00:42
поделиться