Обнаружение включенного Wi-Fi (независимо от того, подключен ли он)

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

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

Итак, как я могу проверить, что Wi-Fi включен, но отключен?

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

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


person earnshavian    schedule 05.01.2012    source источник
comment
Я пытался добиться того же: stackoverflow.com/a/26238866/367677   -  person Asahi    schedule 31.12.2014


Ответы (2)


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

Не похоже, что это можно сделать, если вы хотите соблюдать правила Apple. sysctl и ioctl не будут работать, потому что нет флагов, которые покажут вам, включен ли WiFi. Например, флаги «ВКЛЮЧЕНО» и «РАБОТАЕТ» будут одинаковыми, если WiFi отключен или WiFi включен, но не подключен.

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

person YllierDev    schedule 27.04.2012

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

См. Лучший способ обнаружения включения/отключения Wi-Fi на iOS? для получения более полного описания и примера кода.

person Eliot Gillum    schedule 01.02.2017