iOS убивает мою фоновую задачу через 600 секунд - PullRequest
3 голосов
/ 16 октября 2011

Я занимаюсь разработкой приложения, которому требуется обновление фоновой задачи каждые 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 секунд?

Большое спасибо!

1 Ответ

1 голос
/ 16 октября 2011

Вы не можете. Невозможно создать фоновую задачу, которая выполняется более 10 минут.

...