Правильно ли я использую CNCopyCurrentNetworkInfo?

У меня проблемы с данными, возвращаемыми CNCopyCurrentNetworkInfo, и мне было интересно, не делаю ли я что-то не так.

Я используя следующий код для отображения BSSID подключенной в данный момент точки доступа:

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);
    }
}

При просмотре операторов NSLog создается впечатление, что CNCopyCurrentNetworkInfo при определенных обстоятельствах зависает на старых данных для kCNNetworkInfoKeyBSSID.

У меня настроены две точки доступа и Я пытаюсь получить BSSID подключенной в данный момент точки доступа. Если я начинаю с включенной только одной AP, он возвращает правильный BSSID. Если я выключаю эту точку доступа, я не получаю BSSID (правильный), а когда я включаю вторую точку доступа и подключаюсь к ней, мне дается правильный BSSID второй точки доступа.

Однако, если я начинаю с одной включенной точки доступа, запустите это код, и мне правильно дан BSSID этой AP. Затем я включаю вторую точку доступа, затем выключаю первую (заставляя устройство перемещаться ко второй точке доступа), операторы журнала по-прежнему возвращают BSSID первой точки доступа (которую я отключил и к которой, возможно, не подключен).

Есть ли у кого-нибудь больше опыта в этом, чем у меня? Могу ли я вручную сбрасывать значения, возвращаемые CNCopyCurrentNetworkInfo между вызовами?

Я запускал это как на iPod touch 4-го поколения под управлением iOS 4.3, созданном с использованием Xcode 4, так и на iPhone 4 под управлением iOS 4.1, созданном с использованием Xcode 3.2.4

8
задан goawaygeek 18 April 2011 в 02:45
поделиться