Я занимаюсь разработкой приложения, которому требуется обновление фоновой задачи каждые 30 минут.
Я пытался использовать NStimer и обновлять каждую минуту, и он работает (он потратил 2 часа на работу). Однако, когда я установил его на 30 минут, iOS убьет мое приложение через 10 минут.
В журнале написано:
Sun Oct 16 11:29:47 unknown SpringBoard[32] <Warning>: MyApp[315] has active assertions beyond permitted time:
{(
<SBProcessAssertion: 0xbb34040> identifier: UIKitBackgroundCompletionTask process: MyApp[315] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:315 preventSuspend preventIdleSleep
)}
Sun Oct 16 11:29:47 unknown SpringBoard[32] <Warning>: Forcing crash report of WhereAreYouReg[315]...
Sun Oct 16 11:29:48 unknown SpringBoard[32] <Warning>: Finished crash reporting.
Моя фоновая задача запускается с этим кодом:
backgroundTaskIdentifier = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
// If you're worried about exceeding 10 minutes, handle it here
}];
theTimer=[NSTimer scheduledTimerWithTimeInterval:30*60.0
target:self
selector:@selector(updateLocation)
userInfo:nil
repeats:YES];
updateLocation начинает обновлять местоположение и, когда оно получено, останавливает обновление местоположения для экономии заряда батареи.
Как предполагается выполнить эту фоновую задачу? Любая помощь для предотвращения убийства моего приложения через 600 секунд?
Большое спасибо!