NSTimer deja de disparar en segundo plano después de un tiempo

Hola, estoy desarrollando una aplicación en la que tengo que hacer llamadas API cada 30 segundos, así que creé NSTimer para ello. Pero cuando mi aplicación entra en el temporizador de fondo deja de disparar después de 3-4 minutos. Por lo tanto, funciona solo de 3 a 4 minutos en segundo plano, pero no después de eso. ¿Cómo puedo modificar mi código para que el temporizador no se detenga?

Aquí está algo de mi código.

- (IBAction)didTapStart:(id)sender {
    NSLog(@"hey i m in the timer ..%@",[NSDate date]);
    [objTimer invalidate];
    objTimer=nil;

    UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
    UIApplication  *app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        [app endBackgroundTask:bgTask];
    }];
    objTimer = [NSTimer scheduledTimerWithTimeInterval:30.0 target:self
                                                       selector:@selector(methodFromTimer) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:objTimer forMode:UITrackingRunLoopMode];
}

-(void)methodFromTimer{
    [LOG debug:@"ViewController.m ::methodFromTimer " Message:[NSString stringWithFormat:@"hey i m from timer ....%@",[NSDate date] ]];
    NSLog(@"hey i m from timer ....%@",[NSDate date]);
}

Incluso cambié el código con lo siguiente:

[[NSRunLoop mainRunLoop] addTimer:objTimer forMode:NSRunLoopCommonModes];

Esto tampoco funcionó.

Respuestas a la pregunta(4)

Su respuesta a la pregunta