2017-01-30 5 views
2

Я хочу знать, что использует startmonitoringsignificantlocationchanges для доставки местоположения, это GPS или Wi-Fi/Интернет? Мое понимание - это использование сотовых или Wi-Fi, чтобы знать, движется ли устройство значительно, но то, что я не знаю, во время выбора местоположения использует GPS только для того, чтобы забрать место.Что использует startMonitoringSignificantLocationChanges для доставки местоположения

Мои выводы: я путешествовал 30 км по городу, но не получал никаких мест в фоновом режиме, и во время этого путешествия мои данные о Wi-Fi и Cellular были отключены. Поэтому, пожалуйста, сообщите, не может ли Significant не предоставлять местоположения только на основе GPS.

ответ

1

Приложение для установки местоположения в прошлом, я предположил, что GPS использовался только при вызове метода startUpdatingLocation(). После двойной проверки документов Apple явно не указывает, может ли значительная функция LocationChanges использовать GPS, но это вариант энергосбережения, и в их документах указано, что «требуется наличие сотового оборудования», что делает меня вполне уверенным в том, что мой предположение (и ваше) правильное. Я оставлю это немного, если есть эксперт по оборудованию, который точно знает. Документы, которые вы хотите: https://developer.apple.com/reference/corelocation/cllocationmanager

0

Как и все функции местоположения, он использует комбинацию сотовой связи, Wi-Fi и GPS. Использование ячейки первичный. Идея состоит в том, чтобы как минимум использовать GPS, чтобы предотвратить утечку аккумулятора.

Вы, конечно же, не можете ожидать, что это сработает с выключенной ячейкой; действительно, если ваш код правильно проверит significantLocationChangeMonitoringAvailable с выключенной ячейкой, я бы интуитивно ожидал, что ответ будет false.

(Также обратите внимание, что вы не будете получать какие-либо события, если у вас есть менеджер местоположения с делегатом.)

0

Как объяснено в этом ответе «Hows does Significant Location Change work?» (и в WWDC видео с 2013-2015) Значительное изменение местоположения мониторинг использует метод, называемый Cell Tower Triangulation.

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

По моему опыту я заметил, что этот метод дает точность ок. 1000м. Он не использует аппаратное обеспечение GPS и, следовательно, более эффективно работает с батареей. Он хорош для грубых обновлений местоположения. См. Сессию WWDC 2013 Harnessing iOS to Create Magic in Your Apps, где ведущий делает ссылку на эту технологию.

+0

У меня создалось впечатление, что он использует сотовую триангуляцию для генерации события изменения местоположения и включения GPS в течение 10 секунд, а затем дает местоположение, используя GPS. Но с этой техникой я должен был получить несколько обновлений местоположения во время тестирования, но я их не получил. Возможно, из-за того, что сотовые данные и Wi-Fi отключены, и хотя сотовая сеть и GPS были доступны, их было недостаточно для обеспечения местоположения. Есть ли какое-либо объяснение этому или это нормально. –

+0

В iOS 9+ вы можете использовать (requestLocation) [https://developer.apple.com/reference/corelocation/cllocationmanager/1620548-requestlocation] API, чтобы получить сигловое исправление местоположения с высокой точностью из оборудования GPS. После этого диспетчер местоположений автоматически отключится. Существует также множество других соображений, таких как обновление plist, setAllowsBackgroundUpdates, авторизация местоположения и т. Д. Кроме того, не забудьте перевернуть :) – zakishaheen