1. 首先,获取设备连接的WiFi信息,需要添加系统库 <SystemConfiguration/CaptiveNetwork.h> 文件,
然后,上代码:
- (void)queryDeviceWiFiInfo {
NSDictionary *currentWifiInfo = nil;
// 获取当前的interface 数组
CFArrayRef currentInterfaces = CNCopySupportedInterfaces();
if (!currentInterfaces) {
return;
}
// 类型转换,将CF对象,转为NS对象,同时将该对象的引用计数交给 ARC 管理
NSArray *interfaces = (__bridge_transfer NSArray *)currentInterfaces;
if (interfaces.count >0) {
for (NSString *interfaceName in interfaces) {
// 转换类型,不改变引用计数
CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName));
if (dictRef) {
NSDictionary *networkInfo = (__bridge_transfer NSDictionary *)dictRef;
NSString *SSID = [networkInfo objectForKey:(__bridge_transfer NSString *)kCNNetworkInfoKeySSID];
NSString *BSSID = [networkInfo objectForKey:(__bridge_transfer NSString *)kCNNetworkInfoKeyBSSID];
NSData *SSIDDATA = [networkInfo objectForKey:(__bridge_transfer NSData *)kCNNetworkInfoKeySSIDData];
currentWifiInfo = @{@"SSID":SSID,
@"BSSID":BSSID,
@"SSIDDATA":SSIDDATA};
}
}
}
NSLog(@"currentWifiInfo = %@",currentWifiInfo);
}
2. 获取当前设备WiFi列表信息需iOS9及其以上的设备,添加系统库 <NetworkExtension/NetworkExtension.h>
代码如下:
- (void)queryDeviceWiFiInfoList {
dispatch_queue_t q = dispatch_queue_create("com.leopardpan.HotspotHelper", 0);
[NEHotspotHelper registerWithOptions:nil queue:q handler:^(NEHotspotHelperCommand * _Nonnull cmd) {
if (cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList) {
for (NEHotspotNetwork *network in cmd.networkList) {
NSLog(@"SSID = %@",network.SSID);
NSLog(@"BSSID = %@",network.BSSID);
}
}
}];
}
若运行后,发现列表为空,则需在手机系统设置的WLAN中,wifi列表加载成功后,重新启动方可获取。