Как запустить 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 на рабочем столе работает