¿Cómo ejecutar NSTimer en segundo plano más allá de 180 segundos en iOS 7?

Lo he intentado pero no he trabajado más de 180 segundos en iOS 7 y Xcode 4.6.2. por favor, ayúdame

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"); } 

A menos que habilites uno de los Background modes , no funcionará.

¿Por qué?

  • Tienes alrededor de 10 minutos de ejecución de fondo luego de que el temporizador es detenido por ios.

  • El temporizador no se activará después de que la aplicación esté bloqueada (iOS7), ya que ios suspende la aplicación en primer plano y bgTask no volverá a recibir el disparo.

Hay algunas soluciones, considere verificar la siguiente pregunta:

iphone – NSTimers en el fondo

¿NSTimer progtwigdo cuando la aplicación está en segundo plano?

NSTimer en el fondo está trabajando