我遇到了一些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);
}
}
通过审查,就好像CNCopyCurrentNetworkInfo挂到旧数据kCNNetworkInfoKeyBSSID但某些情况下会出现的NSLog语句。
我有两个接入点设置,我试图获得当前连接的AP的BSSID。如果我只开启一个AP,它将返回正确的BSSID。如果我关闭该AP,则无法获得BSSID(正确),并且当我打开第二个AP并连接到它时,我会得到第二个AP的正确BSSID。
但是,如果我从启动一个AP开始运行此代码并正确给出该AP的BSSID。然后我打开第二个AP,然后关闭第一个AP(强制设备漫游到第二个AP),日志语句仍然返回第一个AP(我已经关闭并且不可能连接到)的BSSID。
有没有人比我有更多的经验呢?我的意思是手动清除CNCopyCurrentNetworkInfo在调用之间返回的值吗?
我已经上都有了第四代iPod运行该触摸运行iOS 4.3使用的Xcode内置4和iPhone 4运行iOS 4.1使用的Xcode 3.2.4
我有同样的问题,现在在iPhone 4和iOS 5.0.1。我不认为你已经找到了解决方案。 – 2012-02-07 23:26:11