【发布时间】:2011-08-07 13:40:07
【问题描述】:
我对 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 的旧数据上。
我设置了两个接入点,我正在尝试获取当前连接的 AP 的 BSSID。如果我一开始只打开一个 AP,它会返回正确的 BSSID。如果我关闭该 AP,我不会得到 BSSID(正确),当我打开第二个 AP 并连接到它时,我会得到第二个 AP 的正确 BSSID。
但是,如果我从打开一个 AP 开始运行此代码并正确获得该 AP 的 BSSID。然后我打开第二个 AP,然后关闭第一个(强制设备漫游到第二个 AP)日志语句仍然返回第一个 AP 的 BSSID(我已关闭并且可能未连接到)。
有没有人比我有更多的经验?我是否打算在调用之间手动刷新 CNCopyCurrentNetworkInfo 返回的值?
我已经在运行使用 Xcode 4 构建的 iOS 4.3 的第 4 代 iPod touch 和运行使用 Xcode 3.2.4 构建的 iOS 4.1 的 iPhone 4 上运行此程序
【问题讨论】:
-
我遇到了同样的问题,现在在 iPhone 4 和 iOS 5.0.1 上。我认为您没有找到解决方案。
标签: iphone objective-c network-programming wifi