Я хочу загружать местоположение в фоновом режиме каждые 30 секунд до 1 минуты. Является ли это возможным? Я обнаружил, что могу установить UIApplicationBackgroundFetchIntervalMinimum
. Но я посмотрел вокруг этой константы, чтобы сказать устройству, чтобы оно извлекалось примерно каждые 30 минут. Любой способ сделать это? Спасибо.
Фоновая загрузка регулярно
Ответы (2)
Я не знаю точной цели вашей загрузки местоположения каждые 30 секунд. Делать это не рекомендуется. Я думаю, вы можете использовать MonitoringSignificationChanges в структуре CoreLocation. Это даст вам обновление всякий раз, когда происходит значительное изменение местоположения. Это помогает экономить заряд батареи.
Запускает генерацию обновлений на основе существенных изменений местоположения следующим методом:
func startMonitoringSignificantLocationChanges()
Этот метод инициирует доставку событий местоположения асинхронно, возвращаясь вскоре после его вызова. События местоположения доставляются в метод locationManager(_:didUpdateLocations:)
вашего делегата. Первым событием, которое должно быть доставлено, обычно является самое последнее кэшированное событие местоположения (если оно есть), но в некоторых случаях это может быть более новое событие. Получение исправления текущего местоположения может занять несколько дополнительных секунд, поэтому обязательно проверяйте метки времени на событиях местоположения в методе делегата.
Дополнительная информация: Apple Docs
Ваш подход имеет несколько проблем. Большинству приложений не разрешено постоянно работать в фоновом режиме, как вы хотите. Вы получаете ~ 3 минуты фонового времени, а затем ваше приложение приостанавливается. Навигационные приложения являются исключением. Если ваше приложение является навигационным, вам разрешено постоянно работать в фоновом режиме.
Опрашивать GPS каждые 30 секунд — тоже плохая идея, если только вы не навигационное приложение. Вы быстро разрядите батарею пользователя.
Точно так же загрузка местоположения пользователя каждые 30 секунд будет поддерживать сотовую связь / WiFi-радио на телефоне почти постоянно включенным, что довольно быстро разряжает батарею пользователя.