2015-11-13 2 views
2

Я работаю над приложением, которое записывает поездки, отслеживая GPS. Все работает отлично в фоновом режиме , если мы начнем процесс с переднего плана (нажав кнопку «Начать путешествие»). Теперь идея начать запись этих путешествий автоматически запускается iBeacon. Когда iPhone попадает внутрь области радиомаяка, приложение обнаруживает это и вызывает функцию LocationManager.StartUpdatingLocation();Как начать отслеживание GPS, вызванное iBeacon в Xamarin iOS?

ПРОБЛЕМА: Использование iBeacons от фона, мы только получаем 10 секунд в диапазоне, и это та же фигура, я должен получать обновления местоположения от GPS.

Все, что мне нужно, это обнаружить, что я внутри зоны маяка, запускаю GPS и держу его в рабочем состоянии, и только отключить GPS, когда я за пределами региона.

+0

Я пробовал много вещей, как это, но до сих пор я никогда не мог заново зафиксировать местоположение GPS на заднем плане. – rckoenes

+0

Вы пробовали работать с фоновыми задачами? Я думаю идти таким путем. – gjfonte

ответ

1

Мы на самом деле недавно хотели реализовать это поведение в одном из наших приложений и обнаружили, что если мы начнем значительные обновления местоположения (startMonitoringSignificantLocationChanges) на переднем плане, тогда мы сможем запускать регулярные обновления местоположения (startUpdatingLocation) в фона, в нашей реализации didEnterRegion.

(Естественно, ваше приложение нуждается в авторизации «всегда», чтобы получить доступ к Location Services, и включен «обновления Адрес» Режим фона.)

Наше приложение все еще ожидает рассмотрения, так ли это ошибка или особенность Core Location, и остается ли Apple с этим, пока что не видно.

+0

Спасибо! Ну, у нас есть эта реализация и, похоже, работает (на переднем плане). Проблема, которую мы получили, - это когда вы начинаете процесс с фона. Например: iPhone находится в режиме ожидания, и когда вы вошли в зону маяка, приложение должно начать запись нового путешествия, пока вы не покинете регион. Ваше приложение отлично работает в фоновом режиме? – gjfonte

+0

Да, ** при значительном обновлении местоположения **, наше приложение может начать обновление местоположения в фоновом режиме и продолжить до тех пор, пока мы не остановим его. – heypiotr

+0

Благодарим за помощь! Приложение теперь записывает поездки даже в фоновом режиме (как и ожидалось). Я также забыл установить новое разрешение 'AllowsBackgroundLocationUpdates = true' для ** iOS9 ** – gjfonte

1

Лучшее объяснение этому я видел, что может продлить 10 секунд до 3 минут, но это ... App отказ проблема с непрерывной фоновой операции, если ваше приложение действительно не рассматривается как приложение навигации:

Второй подход включает в себя отслеживание маяка в фоновом режиме , отмечая его расчетное расстояние, и только инициирование действия, когда маяк оценивается в пределах определенного диапазона. Этот подход является проблематичным для iOS, потому что CoreLocation обычно позволяет использовать только 10 секунд времени, когда приложение находится в фоновом режиме. Если маяк впервые обнаружен на расстоянии 50 метров, и человек приближается к маяку со скоростью 1 метр в секунду, мобильное устройство по-прежнему будет находиться в 40 метрах , когда iOS приостанавливает приложение и останавливает его от ранжирования.

Хорошей новостью является то, что можно увеличить время фонового диапазона на iOS. Если ваше приложение является навигационным приложением, вы можете указать местоположение обновлений в «Необходимые фоновые режимы» в вашем Info.plist. Но этот подход затрудняет получение одобрения AppStore - вы должны убедить рецензентов в том, что ваше приложение предоставляет навигационные услуги пользователю . Это, вероятно, неверно для многих приложений, которые просто хотят, чтобы использовали маяки для запуска на определенном расстоянии.

К счастью, вы все же можете продлить время фона без с запросом специальных фоновых режимов. Время, которое вы можете получить, ограничено - всего три минуты. Но эти часы перезапускаются каждый раз, когда ваше приложение пробуждается в фоновом режиме, что означает, что вы можете получить дополнительные три минуты времени, когда ваше приложение обнаруживает маяк (входит в маяк ) или перестает видеть маяки (выходит из зоны маяка .)

Via: http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html

2

к сожалению, вы можете использовать CoreLocation геозоны в фоновом режиме, но вы не можете получить мелкие обновления GPS постоянно. Это не дело Xamarin - это ограничение iOS.

Я написал сообщение в блоге, что @RobertN ссылается на расширение фона маяка до 3 минут. Но я не думаю, что это очень помогает вам, потому что вы хотите постоянно получать обновления GPS, что Apple просто не позволяет.

+1

«но вы не можете получать тонкие обновления GPS постоянно». Неправильно вы можете. Но вы должны начать это с переднего плана, и вы должны каким-то образом использовать эти места. Мое приложение получает gps с максимальной точностью в фоновом режиме, но в его случае он не может, потому что он хочет начать с фона – AlexWien

+0

@davidgyoung Не понял, что было в блоге. Я использовал его как ссылку для других на некоторое время, он спас мой бекон в контрактном проекте в начале этого года. Благодаря! – SushiHangover

+0

Рад, что вы нашли это полезным! – davidgyoung

Смежные вопросы