Сохранение приложения в фоновом режиме для непрерывного обновления местоположения
Мой проект использует объект CLLocationManager, получая обновления через: locationManager:didUpdateToLocations:
Я хочу эти обновления, даже если мое приложение находится в фоновом режиме. Поэтому в info.plist я установил список "Требуемые фоновые режимы" для регистрации приложений для обновления местоположения.
Но мое тестирование показывает, что оно не получает обновления в фоновом режиме.
Тем не менее, я не уверен, что у меня правильное восприятие фонового состояния / приостановленного состояния. Вот как я думаю, что это работает:
After the home button is pressed, the app enters background mode for 5 seconds,
and then enter suspended state.
Я думаю, именно поэтому он не работает. Но если установка для info.plist значения "" приложение регистрирует обновления местоположения "не удерживает приложение от приостановленного состояния, то как мне его достичь?
Какая разница (если есть) в нажатии кнопки Home и нажатии кнопки блокировки? Я имею в виду состояние.
Я прочитал соответствующие части этого руководства: http://www.raywenderlich.com/29948/backgrounding-for-ios
Я все еще новичок в IOS, так что я мог что-то упустить.
1 ответ
Во-первых, изучали ли вы "Получение событий местоположения в фоновом режиме" в Руководстве по программированию местоположения и карт?
Вы проверили backgroundRefreshStatus
? Это приложение может работать в фоновом режиме в соответствии с ним?
Какова стоимость pausesLocationUpdatesAutomatically
?
Какую точность вы запрашиваете? Достаточно ли вы двигаетесь, чтобы генерировать изменения в точности?
Ты звонил startUpdatingLocation
?
Это iOS 6 или 7? Если iOS 7, обязательно посмотрите сеанс 204: "Что нового в многозадачности?" Произошло несколько изменений, и теперь iOS более агрессивно настроена на закрытие приложений, чем раньше.