Определить Wi-Fi включен (независимо от того, подключен ли он) - PullRequest
7 голосов
/ 05 января 2012

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

Я использовал запросы Reachability, чтобы определить, доступен ли wifi до начала отслеживания. Проблема заключается в том, что если этот запрос сделан, Wi-Fi включен, но не подключен к сети, это показывает, что Интернет недоступен через Wi-Fi, но это не означает, что настройка отключена в приложении настроек. Это означает, что если пользователь начинает работать и соединение устанавливается в середине, он получит сигнал местоположения от Wi-Fi вместо GPS или сотовой сети. Следовательно, точность этих точек данных может быть> 10 метров, поэтому я хочу пропустить эту точку. Проблема в том, что на Wi-Fi у них будет большой пустой период, когда их сигнал не был записан.

Так как я могу проверить, включен ли wifi , но отключен?

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

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

Ответы [ 2 ]

2 голосов
/ 27 апреля 2012

Прошло много времени с тех пор, как вы спросили, но я только что натолкнулся на это.

Не похоже, что есть способ сделать это, если вы хотите подчиняться правилам Apple.sysctl и ioctl не будут работать, потому что нет флагов, которые покажут вам, включен ли WiFi.Например, флаги для «UP» и «RUNNING» будут одинаковыми, если WiFi отключен или WiFi включен, но не подключен.

В собственной инфраструктуре Wi-Fi от Apple используется mach для прямой связи с ядром, и я сомневаюсь, что Appleпозволил бы такой код в AppStore.

0 голосов
/ 01 февраля 2017

Это возможно, но решение неясно и безобразно. Короткий ответ: если вы видите ДВА интерфейса с именем «awdl0», то WiFi включен, только один, и он отключен.

См. Более эффективный способ обнаружения включения / выключения WiFi на iOS? для более полного описания и примера кода.

...