Расширьте лимит фонового процесса в версиях iOS 10.3.2 и выше.IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Расширьте лимит фонового процесса в версиях iOS 10.3.2 и выше.

Сообщение Anonymous »

Я работаю над приложением, которое отправляет местоположение устройства на сервер каждые 15 минут. Логика находится внутри didUpdateToLocation. Я планирую таймер для вызова метода restartLocationUpdates через каждые
180 секунд (3 минуты) и останавливаю обновление местоположения, вызывая stopLocationDelayBy10Seconds< /strong> через 10 секунд для экономии заряда батареи.

Код: Выделить всё

-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
//some business logic goes here....
if (sendLocation) {
//send location to server
}

UIApplication* application = [UIApplication sharedApplication];

__block UIBackgroundTaskIdentifier bgTaskId = UIBackgroundTaskInvalid;
if ([application respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) {
bgTaskId = [application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask:bgTaskId];
bgTaskId = UIBackgroundTaskInvalid;

}];
//using a timer to schedule a method call
self.bgtimer = [NSTimer scheduledTimerWithTimeInterval:180 target:self
selector:@selector(restartLocationUpdates)
userInfo:nil
repeats:NO];

//stopping the locatioupdates after 10 seconds to save battery
self.delayTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self
selector:@selector(stopLocationDelayBy10Seconds)
userInfo:nil
repeats:NO];
}

- (void) restartLocationUpdates {
counter++;
if(counter == 5){
sendLocation = YES;
counter=0;
}else{
sendLocation = NO;
}
//invalidating the bgtimer before creating and scheduling it again.
if (self.bgtimer) {
[self.bgtimer invalidate];
self.bgtimer = nil;
}
//configuring location manager and then starting location updates
//.....
[locationManager startUpdatingLocation];
}

-(void)stopLocationDelayBy10Seconds{
[locationManager stopUpdatingLocation];
}
До iOS10 он работал нормально, но после iOS10.3.2 bgtimer работает нестабильно, он перестает работать через 10 минут, когда приложение переходит в фоновое состояние. Может ли кто-нибудь помочь мне, что не так с кодом и как продолжать работать таймером, пока приложение работает в фоновом режиме?
Имп: разрешение служб определения местоположения установлено на «Всегда», а для BackgroundMode включено. обновления местоположения и фоновая загрузка

Подробнее здесь: https://stackoverflow.com/questions/455 ... e-versions
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»