Я хочу реализовать длительный фоновый таймер, который периодически отправляет местоположение пользователя на сервер.
Для этого я устанавливаю режим location
для UIBackgroundModes
и вызываю beginBackgroundTaskWithExpirationHandler
, когда приложение переходит в фоновый режим.
И для CLLocationManager
, я использую метод startUpdatingLocation
(не хочу использовать значительные изменения, потому что мне нужно место высокой точности).
Но примерно через 26 минут после того, как приложение перейдет на задний план, оно перестает отправлять местоположение на сервер. Но приложение не разбилось, поэтому после того, как я принесу приложение на передний план, он может возобновить свой таймер.
26минут из экспериментов, с iOS 6.1, iPhone 5.
Вот несколько вопросов,
-
Я не могу понять, почему он приостанавливается после 26 минут не 10 минут, что известно как ограничение по времени для фоновой задачи.
-
До 16 минут методы
backgroundTimeRemaining
возвращают двойное максимальное значение. Но после 16 минут он уменьшается от600
, поэтому приостанавливает фоновое задание после 10 минут.
Я уже пытался вызвать beginBackgroundTaskWithExpirationHandler
внутри обработчика истечения, но не использовать.
Если кто-нибудь, у кого есть ключ к этой проблеме, будет очень благодарен.