应用程序在后台模式下执行180秒后重新启动。通过启用功能中的后台模式

时间:2018-02-17 04:59:31

标签: ios objective-c ios-background-mode

我根据我的要求制作了一个示例应用程序,代码如下所示

设计:包含1个按钮1标签

enter image description here

.h文件代码

@interface ViewController : UIViewController{
    int count;
    NSTimer *theTimer;
    UIBackgroundTaskIdentifier counterTask;
}

@property (weak, nonatomic) IBOutlet UILabel *theCount;

.m文件代码

- (IBAction)start:(id)sender {

    counterTask = [[UIApplication sharedApplication]
                   beginBackgroundTaskWithExpirationHandler:^{
                       // If you're worried about exceeding 10 minutes, handle it here

                       theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
                                                                 target:self
                                                               selector:@selector(countUp)
                                                               userInfo:nil
                                                                repeats:YES];

                   }];
    count=0;
    theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
                                              target:self
                                            selector:@selector(countUp)
                                            userInfo:nil
                                             repeats:YES];

}

- (void)countUp {
    if (count==100000) {
        [theTimer invalidate];
        [[UIApplication sharedApplication] endBackgroundTask:counterTask];
    } else {
        count++;
        NSString *currentCount;
        currentCount=[[NSString alloc] initWithFormat:@"%d",count];
        _theCount.text=currentCount;
    }
}

问题在于,当在后台运行此应用程序时(通过按下主页按钮并最小化iPhone中的应用程序),即使启用功能中的后台模式,它也会在180秒后重新启动。我需要将其延长至4小时。请帮我。

1 个答案:

答案 0 :(得分:0)

在iOS的更高版本中,后台任务的限制为3分钟(180秒)。你不能把它延长到4个小时。

Apple Docs:

  

注意:在启动任务时始终提供过期处理程序,但如果您想知道应用程序剩余运行的时间,请获取UIApplication的backgroundTimeRemaining属性的值。

关于主题的好Stack Overflow Post:

How long does Apple permit a background task to run?