Как запустить 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"); } 

Если вы не включите один из Background modes , это не сработает.

Зачем?

  • У вас есть около 10 минут выполнения фона после этого таймер остановлен ios.

  • Таймер не загорается после того, как приложение заблокировано (iOS7), так как ios приостанавливает приложение переднего плана, а bgTask снова не bgTask .

Существует несколько обходных решений, рассмотрим вопрос ниже:

iphone – NSTimers в фоновом режиме

Запланированный NSTimer, когда приложение находится в фоновом режиме?

Работает NSTimer на фоне работы

Давайте будем гением компьютера.