如何在iOS 7中超过180秒的后台运行NSTimer?

时间:2014-03-25 08:25:12

标签: ios timer nstimer

我试过这个但在iOS 7和Xcode 4.6.2中的工作时间不超过180秒。请帮帮我

    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 个答案:

答案 0 :(得分:11)

除非您启用其中一个Background modes,否则无法使用。

为什么?

  • 在ios停止计时器后,你有大约10分钟的后台执行时间。

  • 应用程序被锁定后,计时器不会启动(iOS7),因为ios会暂停前台应用程序而bgTask不会再次开火。

有一些解决方法,请考虑检查以下问题:

iphone - NSTimers in background

Scheduled NSTimer when app is in background?

NSTimer on background IS working