2012-01-05 9 views
7

Para una aplicación de seguimiento GPS, la grabación de señales de ubicación con WIFI encendido da como resultado datos o datos realmente imprecisos con espacios vacíos.Detecta wifi habilitado (independientemente de si está conectado)

He utilizado las consultas de Accesibilidad para detectar si wifi está disponible antes de iniciar el seguimiento. El problema es que si cuando se realiza la consulta el wifi está habilitado pero no conectado a una red, muestra que no se puede acceder a internet a través de wifi, pero eso no indica si la configuración está desactivada en la aplicación de configuración. Esto significa que si el usuario comienza a funcionar y se establece una conexión a mitad de la ejecución, obtendrá una señal de ubicación del wifi en lugar del GPS o la red de la célula. En consecuencia, la precisión en esos puntos de datos puede ser> 10 metros, así que quiero omitir ese punto. El problema es que en wifi tendrán un gran período en blanco donde su señal no fue grabada.

Entonces, ¿cómo puedo comprobar si wifi es activado pero desconectado?

He leído todas las otras discusiones de accesibilidad que pude encontrar, pero esta parece ser la única brecha con muchas respuestas que sugieren incorrectamente que la accesibilidad lo resuelve de la caja.

... y no voy a requieren wifi - simplemente avísenles que está habilitado, por lo que en algún momento de su entrenamiento podrían perderse sus datos de ubicación (debido a la inexactitud).

+0

Estaba tratando de lograr lo mismo: http://stackoverflow.com/a/26238866/367677 – Asahi

Respuesta

2

Ha pasado bastante tiempo desde que me lo preguntaron, pero acabo de encontrarlo.

Parece que no hay forma de hacerlo si quiere obedecer las reglas de Apple. sysctl y ioctl no funcionarán porque no hay indicadores que le muestren si WiFi está habilitado. Por ejemplo, las banderas para "ARRIBA" y "EN EJECUCIÓN" serán las mismas si WiFi está deshabilitado o WiFi está habilitado pero no está conectado.

El propio marco WiFi de Apple utiliza mach para comunicarse directamente con el núcleo y dudo que Apple permita dicho código en la AppStore.

0

Esto es posible, pero la solución es oscura y fea. La respuesta corta es que si ve dos interfaces con el nombre "awdl0", se habilita WiFi, solo una y está deshabilitada.

Consulte Better way to detect WiFi enabled/disabled on iOS? para obtener una descripción más completa y un código de muestra.

Cuestiones relacionadas