Итак, я хочу, чтобы мое приложение выполняло фоновое выполнение только в течение фиксированного периода времени, это на случай, если пользователь не остановит приложение вручную, и поэтому приложение теоретически может работать в фоновом режиме вечно( это вообще возможно?).
Я использую приведенный ниже код (просто тестовое приложение), чтобы проверить, как долго может работать фоновая задача до завершения. Я где-то читал, что 10 минут — это максимальное время, которое мы можем выполнять в фоновом режиме, и нет никакого способа выйти за его пределы (?). Однако мой код будет выполняться в фоновом режиме только в течение 3 минут.
Итак, резюмируя мои вопросы:
- Можно ли заставить приложение выполняться в фоновом режиме в течение x> 10 минут?
2. Есть ли у меня другие варианты чего-то подобного? (фактическое приложение, в котором мне это нужно, получает обновления местоположения в фоновом режиме, пользователь может использовать телефон в фоновом режиме до 30 минут, и внезапно не получать обновления было бы плохо)
- (void)viewDidLoad {
[super viewDidLoad];
counterTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
// do something }];
count=0;
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
}
- (void)countUp {
if (count==10000) {
[theTimer invalidate];
[[UIApplication sharedApplication] endBackgroundTask:counterTask];
} else {
NSLog(@"asd");
count++;
NSString *currentCount;
currentCount=[[NSString alloc] initWithFormat:@"%d",count];
_theCount.text=currentCount;
long seconds = lroundf([[UIApplication sharedApplication] backgroundTimeRemaining]);
NSLog([NSString stringWithFormat:@"%ld",seconds]);
}
}