2015-09-16 2 views
0

Что мне нужно сделать, так это; У меня будет таймер, который будет гаснуть, и когда будет 30 минут, я автоматически вывещу пользователя. Но если есть какое-либо взаимодействие с приложением, я сброшу таймер на 30 мин. У меня есть идея, что делать, но я уверен, что есть лучший способ сделать это.Автоматический таймер выключения в приложении?

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

Мое quesiton, хотя есть возможность ответить на любые касания в приложении в один кусок кода? Как-то есть суперкласс, к которому я могу добавить это, и он всегда будет сбросить таймер независимо от того, какое взаимодействие произошло? Или мне нужно добавить код ко всем местам, где пользователь будет взаимодействовать с приложением?

ответ

1

Вы можете попробовать это, подкласс UIApplication и добавьте следующий код в реализации

@implementation MyApplication 

- (instancetype)init { 
    self = [super init]; 
    if (self) { 
     [self reset]; 
    } 
    return self; 
} 

- (void)reset { 
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(logout) object:nil]; 
    [self performSelector:@selector(logout) withObject:nil afterDelay:30*60]; 
} 

- (void)sendEvent:(UIEvent *)event { 
    [super sendEvent:event]; 

    [self reset]; 
    NSLog(@"event detected"); 
} 

- (void)logout { 
    NSLog(@"logout now"); 
} 
@end 

Затем в main.m изменения реализации как этот

return UIApplicationMain(argc, argv, NSStringFromClass([MyApplication class]), NSStringFromClass([AppDelegate class])); 

Вот что происходит это, - (void)sendEvent:(UIEvent *)event метод будет вызван после каждого действия пользователя. Затем мы регистрируем запрос на выполнение селектора через 30 минут. Как только пользователь коснется экрана в течение 30 минут, отмените предыдущий запрос и зарегистрируйте новый.

+0

Спасибо, что попробуй это, когда у меня будет время. Все еще работает над чем-то другим. Это похоже на то, что мне нужно. Поэтому, если я смотрю в классе '' 'UIApplication'', я должен увидеть метод под названием' '' - (void) senEvent) '' ', который вызывается каждый раз, когда в приложении происходит событие. Im интересно, какова область событий, на которые будет вызван метод, и как этот метод взаимодействует с системой – Esko918

+0

взаимодействие этого события и остальной части приложения обрабатывается в классе приложений ui. вот почему мы называем супер метод. если u comment super call ничего не произойдет, я думаю (не проверено в этом случае) – Johnykutty

+0

Спасибо, человек, я только что реализовал это сейчас, он работает – Esko918