Проверка того, как долго приложение iPhone находилось в фоновом режиме при выходе на передний план - PullRequest
6 голосов
/ 29 февраля 2012

У меня есть приложение для iPhone, которое позволяет пользователям входить в систему и взаимодействовать с веб-сервисом.Я хотел бы, чтобы у пользователя была возможность автоматического выхода из системы после определенного периода бездействия ... более конкретно, если приложение находилось в фоновом режиме более определенного периода времени (например, 1 час).

В идеале я хотел бы запустить проверку в методе делегата приложения applicationWillEnterForeground, который проверяет, как долго приложение находилось в фоновом режиме, а затем, если оно было разрешено в течение определенного времени, перенести их на экран входа в систему.

Как бы я запустил эту проверку в вышеуказанном методе?Я был бы признателен за пример кода.

Если это не лучший способ удовлетворить мои требования, тогда предложения также приветствуются!

Заранее большое спасибо

Andy

Ответы [ 4 ]

12 голосов
/ 29 февраля 2012

Вы можете использовать это:

- (void)applicationWillResignActive:(UIApplication *)application
{    
    NSDate *thisMagicMoment = [NSDate date];
    [[NSUserDefaults standardUserDefaults] setObject:thisMagicMoment forKey:@"lastMagicMoment"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    NSDate *thisMagicMoment = [NSDate date];
    NSDate *lastMagicMoment =  (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"lastMagicMoment"];

    if (lastMagicMoment==nil)
    {
        NSLog (@"First launch!");
    }
    else
    {
        NSTimeInterval timeOfNoMagic = [thisMagicMoment timeIntervalSinceDate:lastMagicMoment]/3600.0;
        NSLog (@"Application was in background for %.1f hours", timeOfNoMagic);

        //do your stuff - treat NSTimeInterval as double

        if (timeOfNoMagic > 1.0)
        {
            //logout
        }
    }
}
2 голосов
/ 29 февраля 2012

Экономьте время, когда приложение переходит в фоновый режим в NSUserDefaults.затем прочитайте его, когда он снова выйдет на передний план.

В applicationWillEnterForeground, если разница во времени превышает 1 час, вы устанавливаете флаг или публикуете уведомление.то есть у вас может быть метод в вашем делегате приложения, который выводит пользователя из системы, или вы можете иметь проверку для флага в viewWillAppear, который при необходимости выводит пользователя из системы.

2 голосов
/ 29 февраля 2012

Запишите время и дату в NSUserDefaults, когда приложение переходит в фоновый режим или закрывается.Затем прочитайте это время и дату из NSUserDefaults в applicationWillEnterForeground и сравните.Если это более 1 часа (или любое другое время, установленное для тайм-аута), отобразите экран входа в систему.

0 голосов
/ 29 февраля 2012

Сначала установите таймер в методе applicationdidFinishLaunching:

Теперь проверьте время в методе applicationDidBecomeActive: он вызывается каждый раз, когда пользователь снова запускает приложение.

Если время больше, чем ex (1 час), затем сбросьте таймер и выйдите из системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...