2011-04-18 16 views
8

Tengo algunos problemas con los datos devueltos por CNCopyCurrentNetworkInfo y me preguntaba si estoy haciendo algo mal.¿Estoy usando CNCopyCurrentNetworkInfo correctamente?

estoy usando el siguiente código para mostrar el BSSID del punto de acceso conectado en ese momento:

NSArray* interfaces = (NSArray*) CNCopySupportedInterfaces(); 

for (NSString* interface in interfaces) { 

CFDictionaryRef networkDetails = CNCopyCurrentNetworkInfo((CFStringRef) interface); 
if (networkDetails) { 
    NSLog(@"all details: %@", (NSDictionary *)networkDetails); 
    NSLog(@"BSSID: %@", (NSString *)CFDictionaryGetValue (networkDetails, kCNNetworkInfoKeyBSSID)); 
    CFRelease(networkDetails); 
    } 
} 

revisar los extractos NSLog parece como si CNCopyCurrentNetworkInfo está colgando en datos antiguos para kCNNetworkInfoKeyBSSID bajo ciertas circunstancias.

Tengo dos puntos de acceso configurados y estoy tratando de obtener el BSSID del AP actualmente conectado. Si comienzo con solo un AP encendido, devuelve el BSSID correcto. Si apago ese AP, no obtengo ningún BSSID (correcto) y cuando enciendo el segundo AP y me conecto, me dan el BSSID correcto del segundo AP.

Sin embargo, si comienzo con un AP encendido, ejecute este código y reciba correctamente el BSSID de ese AP. Luego enciendo el segundo AP, luego apago el primero (forzando al dispositivo a recorrer el segundo AP), las declaraciones de log aún devuelven el BSSID del primer AP (que he apagado y posiblemente no estoy conectado).

¿Alguien tiene más experiencia con esto que yo? ¿Tengo la intención de enjuagar manualmente los valores devueltos por CNCopyCurrentNetworkInfo entre llamadas?

me he ejecutar esto en tanto una cuarta generación de iPod touch con iOS 4.3 construida usando Xcode 4 y un iPhone 4 con iOS 4.1 construido usando Xcode 3.2.4

+0

Estoy teniendo el mismo problema, ahora en iPhone 4 y iOS 5.0.1. No creo que hayas encontrado una solución. –

Respuesta

4

voy a dar una respuesta a esta pregunta porque parece obtener el voto ocasional y podría hacer con una solución.

La versión corta es que sí, así es como se supone que debe usar CNCopyCurrentNetworkInfo. Este es un error en iOS 4 y 5. Si actualmente está ejecutando una versión beta de iOS 6, le sugiero que investigue si todavía funciona de esta manera y lo informa a Apple si lo hace.

Tuve la suerte de trabajar en aplicaciones empresariales y pude obtener esta información mediante llamadas a API privadas. Para obtener información sobre cómo hacer esto, probablemente recomendaría buscar aquí: iphone-wireless on google code

Cuestiones relacionadas