Ответ 1
Apple использует свою собственную базу данных с iOS 3.2 (до этого они использовали Skyhook Wireless). Это работает, отправляя WiFi MAC-адреса в Apple с помощью устройств iOS с поддержкой GPS. Поэтому, если устройство имеет исправление GPS, оно автоматически отправляет все MAC-адреса WiFi, которые он видит вместе с местоположением, обнаруженным GPS, в Apple. Нет возможности изменить это поведение, кроме главного переключателя Core Location. Пользователи должны принять эту передачу увиденных MAC-адресов WiFi в EULA.
Распознавание местоположения через WiFi работает наоборот, отправляя все увиденные MAC-адреса WiFi в Apple, и они отвечают на это местоположение. На самом деле они сильно оптимизируют это, кэшируя как можно больше WiFi-адресов на телефоне. Таким образом, это даже работает (в некоторой степени) на iPod touch без каких-либо сетевых подключений.
Слабым местом этого алгоритма являются MiFi и подобные устройства (перемещение точек доступа Wi-Fi). В настоящее время Core Location не очень хорошо отбрасывает явно неправильные местоположения WiFi. Например, на внутренних торговых выставках без приема GPS, будьте готовы получить неправильные обновления местоположения из-за многих устройств MiFi.
Отвечайте на вопрос о том, как вручную добавлять точки доступа Wi-Fi: нет, нет способа сделать это. Просто используйте iPhone с поддержкой GPS, работающий под управлением iOS 3.2 или выше, и MAC-адрес в конечном итоге войдет в базу данных. По моему опыту это происходит довольно быстро.