Я хотел бы поделиться информацией о моих выполненных сценариях тестирования и попросить вас поделиться своим опытом с мониторингом региона. Итак, я зарегистрировал две противоположные области (A и B) с радиусом 5 км и желаемой точностью 1 км с расстоянием между ними 20 км. Однако я не получил никаких событий didEnterRegion / didExitRegion при путешествии от A к B. В моем прототипе приложения я также поместил две кнопки (для целей тестирования): одна запускает значительное изменение, а другая - стандартный мониторинг местоположения. Обе распечатки делали события didUpdateToLocation на экране-журнале.
Итак, после того, как я добрался до центра региона B и очень расстроился из-за непредсказуемой функциональности, я включил значительный мониторинг. После этого я получил несколько didUpdateToLocation с горизонтальной точностью ~ 8,5 км! Вау, это больно, потому что все, что я хочу сделать, это иметь функциональность, при которой пользователь будет уведомлен, что его желаемое место находится где-то в радиусе 5 км от его текущего местоположения, и я хочу положиться на треугольное местоположение ячейки GSM только метод обнаружения (для сохранения батареи).
Итак, вернемся к моему делу. После получения такой большой ошибки в 8 км я включил стандартный мониторинг с лучшей точностью (GPS). И, бинго, я получил событие didUpdateToLocation с горизонтальной точностью 399 м, и только тогда я получил didExitRegion из моего начального места (регион A) и другое событие с didEnterRegion (B). Еще одно обновление от didUpdateToLocation, где чуть точнее - 50м.
В предыдущих сценариях я также получал нестабильную точность. Иногда были 4 км горизонтальной точности, иногда меньше. Но главный вопрос в том, что если мы хотим сохранить батарею (Apple учит нас этому в документах), то можем ли мы полагаться только на мониторинг региона + GSM без использования GPS? Есть пример кода Apple с «правильным использованием мониторинга региона» ( здесь ), однако там есть некоторые недопустимые вещи:
1) Они утверждают, что образец кода работает только для iPhone4, хотя в документации Apple говорится, что на iOS4.0 + поддерживаются как региональный, так и значительный мониторинг. Круто, ха?
2) В примере кода используются все 3 метода определения местоположения: значимый, стандартный, регион. Он использует мониторинг региона все время, но в дополнение использует стандартное местоположение с наилучшей точностью. Когда приложение переходит в фоновый режим, оно останавливается и начинает мониторинг значительных изменений. При входе на передний план приложение перестает существенным и начинает стандартное местоположение. Похоже, документы Apple довольно расплывчаты, неясно, какие штрафы (горизонтальная точность) мы получаем, если мы используем только мониторинг региона, или мы всегда должны использовать все три метода?
3) Документы Apple утверждают, что нам необходимо сохранить батарею и использовать в качестве минимального количества служб определения местоположения, если нам нужно. Если нам не нужен GPS, то мы должны использовать GSM (например, требуемая точность 1–3 км). Но пример кода использует наилучшую желаемую точность (GPS) как для мониторинга региона, так и для стандартного мониторинга (когда приложение находится на переднем плане). Я понимаю, что GPS решит все мои проблемы с ошибками и точностью, но как насчет использования только GSM? После получения 8,5 км горизонтальной точности в моем сценарии я не уверен, возможно ли вообще использовать мониторинг региона, потому что он не может обеспечить приемлемую ошибку по крайней мере на 5 км.