Как люди справляются с запланированным NSTimer, когда приложение работает в фоновом режиме?
Допустим, я что-то обновляю в своем приложении каждый час.
updateTimer = [NSTimer scheduledTimerWithTimeInterval:60.0*60.0
target:self
selector:@selector(updateStuff)
userInfo:nil
repeats:YES];
В фоновом режиме этот таймер явно не срабатывает (?). Что должно произойти, когда пользователь вернется в приложение ..? Таймер все еще работает с тем же временем?
И что произойдет, если пользователь вернется через час. Будет ли он срабатывать все время, которое он пропустил, или он будет ждать до следующего обновления?
Я бы хотел, чтобы он обновлялся сразу после того, как приложение переходит на передний план, если дата, которую оно должно было запустить, - в прошлом. Возможно ли это?
============== Для Объективного c ================
создают Глобальный uibackground идентификатор задачи.
UIBackgroundTaskIdentifier bgRideTimerTask;
теперь создают Ваш таймер и добавляют BGTaskIdentifier С ним, не забывайте удалять старый BGTaskIdentifier при создании нового Объекта - таймера.
[timerForRideTime invalidate];
timerForRideTime = nil;
bgRideTimerTask = UIBackgroundTaskInvalid;
UIApplication *sharedApp = [UIApplication sharedApplication];
bgRideTimerTask = [sharedApp beginBackgroundTaskWithExpirationHandler:^{
}];
timerForRideTime = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(timerTicked:)
userInfo:nil
repeats:YES];
[[NSRunLoop currentRunLoop]addTimer:timerForRideTime forMode: UITrackingRunLoopMode];
Здесь это будет работать на меня, даже когда приложение входит в background.ask меня при нахождении новых проблем.