Как запустить NSTimer в фоновом режиме за 180 секунд в iOS 7?
Я пробовал это, но не работал более 180 секунд в iOS 7 и Xcode 4.6.2. Пожалуйста, помогите мне
UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(timerMethod) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
-(void) timerMethod{
NSLog(@"in timerMethod");
}
Ответы
Ответ 1
Если вы не включите один из Background modes
, это не сработает.
Почему?
-
У вас есть около 10 минут выполнения фона после этого, таймер остановлен ios.
-
Таймер не срабатывает после блокировки приложения (iOS7), так как ios приостанавливает приложение переднего плана, а bgTask
больше не загорается.
Есть некоторые обходные пути, рассмотрим вопрос ниже:
iphone - NSTimers в фоновом режиме
Запланированный NSTimer, когда приложение находится в фоновом режиме?
NSTimer на рабочем столе работает