Ответ 1
Я не знаю какого-либо конкретного списка, но вот несколько вещей, которые вы должны иметь в виду:
- Вы не занимаетесь поиском GPS. Вы выполняете поиск по ключевым местам. Основное местоположение может или не может получать информацию от GPS. Многие люди по-прежнему используют pre-3g iPhones, у которых нет GPS, и даже на телефоне 3g GPS может быть недоступен во многих случаях (например, если человек находится в помещении). В этих случаях телефон попытается выполнить триангуляцию на основе сотовых телефонов, а Core Location вернет результат. Это будет гораздо менее точный, чем GPS.
- Основное местоположение будет кэшировать данные. Первое чтение, которое он предоставляет вашему приложению, скорее всего, будет старым чтением, которое может быть или не быть точным, в зависимости от того, перемещен ли телефон. Обязательно проверяйте временную метку любого местоположения и посмотрите, было ли это до начала вашего приложения.
- Я не знаю, что вы подразумеваете под режимом "энергосбережения", но если вы думаете, когда экран заблокирован/выключен, это не остановит работу Core Location, если ваше приложение все еще работает. Напротив, легко разрядить аккумулятор телефона намного быстрее, чем можно было бы ожидать, если бы вы заблокировали телефон, когда приложение, использующее Core Location, работает, потому что телефон продолжит обновлять приложение, поскольку новые данные о местоположении доступны. Вы можете избежать этого в своем приложении, прослушивая UIApplicationWillResignActiveNotification для обнаружения блокировки экрана и UIApplicationDidBecomeActiveNotification для обнаружения разблокировки.
- Для получения более высоких результатов потребуется больше времени, потому что чем дольше вы будете ждать, тем лучше результаты, до предела. Если вы решите, что вам нужно быть в пределах N метров, подумайте, сколько времени может понадобиться пользователю, чтобы он стоял там, ожидая, когда телефон будет находиться на своем месте.
Насколько 20 метров достаточно точны, вы можете только ответить, исходя из того, как вы ожидаете, что ваше приложение будет использоваться. Проверьте приложение и посмотрите, работает ли он так, как вы хотите, чтобы он работал.