Фоновые задачи iPhone - PullRequest
       1

Фоновые задачи iPhone

4 голосов
/ 10 сентября 2011

Я пытаюсь реализовать обновления местоположения в фоновом режиме на основе таймера. Я знаю все о различных методах обновления местоположения в iOS и пробовал их, но они не соответствуют потребностям. Мне нужно часто проверять места, даже когда они не активны. Я пытался использовать таймеры, но они не работают в фоновом режиме. Это заставило меня найти этот вопрос Как мне получать фоновое обновление местоположения каждые n минут в моем приложении iOS? , и в нем упоминается

UIApplication:beginBackgroundTaskWithExpirationHandler:

Мои вопросы, как вы используете этот метод? Я искал документы Apple, но они рекурсивно указывают друг на друга, когда имеют дело с фоновым выполнением и обновлениями местоположения без примеров.

У меня есть этот код на основе нескольких примеров, которые я нашел:

- (void)applicationDidEnterBackground:(UIApplication *)application
{    
    locationUpdater=[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [[UIApplication sharedApplication] endBackgroundTask:locationUpdater];
        locationUpdater=UIBackgroundTaskInvalid;
    } ];
}

И я добавил ключ "location" в .plist для поддерживаемых фоновых режимов

Гарантирует ли добавление этого только то, что мое приложение не будет убито в течение определенного периода времени, чтобы я мог поддерживать работу таймера? или где я могу добавить методы, которые должны выполняться в фоновом режиме.

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

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

Вам действительно следует использовать сервисы определения местоположения os, чтобы получать уведомления об изменениях местоположения. Почему этого недостаточно? Если местоположение не меняется, какой смысл его извлекать снова и снова, и как только оно изменится, вы получите уведомление.

0 голосов
/ 10 сентября 2011

Для концептуального понимания посмотрите здесь .

Для подробного анализа точности вы можете посетить этот

Вы должны начать использовать startMonitoringSignificantLocationChanges. Вы можете найти образец кода ссылки здесь

...