Длительный фоновый таймер iOS с фоновым режимом "location"

Я хочу реализовать длительный фоновый таймер, который периодически отправляет местоположение пользователя на сервер.

Для этого я установил location режим для UIBackgroundModesи позвоните beginBackgroundTaskWithExpirationHandler когда приложение переходит в фоновый режим. И для CLLocationManager, Я использую startUpdatingLocation метод (не хочу использовать значительные изменения, потому что мне нужно местоположение с высокой точностью).

Но примерно через 26 минут после того, как приложение переходит в фоновый режим, оно прекращает отправку местоположения на сервер. Но приложение не падает, поэтому после того, как я вывожу приложение на передний план, оно может возобновить таймер.

26 минут от экспериментов, с iOS 6.1, iPhone 5.

Вот несколько вопросов,

  1. Я не могу понять, почему он приостанавливается после 26 минут, а не 10 минут, что известно как ограничение по времени для фоновой задачи.

  2. До 16 минут, backgroundTimeRemaining методы возвращают двойное максимальное значение. Но через 16 минут оно уменьшается от 600, поэтому он приостанавливает фоновую задачу через 10 минут.

Я уже пыталась позвонить beginBackgroundTaskWithExpirationHandler внутри обработчика истечения, но бесполезно.

Если есть кто-то, кто имеет ключ к решению этой проблемы, будет принята с благодарностью.

2 ответа

https://github.com/voyage11/Location

Используйте этот код. Вы можете установить временной интервал, который хотите вызвать. Я перепробовал много кодов, но нашел это как наиболее точный и наименее проблемный аккумулятор. Это также здорово для фоновой службы определения местоположения.:)

Если вы установили UIBackgroundModes успешно , приложение может долго работать в фоновом режиме во время движения. Но если вы перестанете двигаться более чем на 10 минут (возможно, дольше), приложение будет приостановлено системой. Ваше приложение будет активным, если местоположение обновится, но это время будет очень коротким, поэтому вы должныbeginBackgroundTaskWithExpirationHandler метод для обработки обновления местоположения.

Другие вопросы по тегам