2012-04-24 5 views
1

Я хочу создать таймер или что-то вроде автоматического выхода из системы после x минут бездействия. Я хотел бы сделать это так же, как это делает приложение Bank of America. То, как приложение BofA делает это, даже когда приложение помещается в фоновое изображение, оно все еще отслеживает время. Когда будет достигнут срок, появится всплывающее уведомление о том, что вы выходите из системы.iOS автоматический выход из системы

Как это можно сделать, если таймер не был приостановлен, когда приложение переходит в фоновый режим?

ответ

2

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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetTimer) name:nil object:nil]; 

Вы должны заботиться с переходом nil к параметрам name и object, как вы получите массу уведомлений (даже некоторые не происходящую из приложения, то есть, предупреждения памяти). Если вы знаете или имеете список конкретных имен событий и/или объектов, которые я бы заметил на них.

В вашем методе resetTimer, вы просто аннулирует предыдущий таймер и создать новый, который будет вызывать некоторый logout метод и установить в Ивар к текущей дате/времени (т.е. timerStart = [NSDate now];)

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

Когда приложение зашифровано, таймеры перестанут работать. Однако, когда приложение вернется на передний план, вы можете рассчитать дельта между [NSDate now] и вашим timerStart iVar. Если дельта больше некоторого интервала, вы вызываете свой метод logout. Если нет, вы можете просто позвонить resetTimer, чтобы снова запустить таймеры.

EDIT

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

+0

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

Смежные вопросы