iOS 获取Wi-Fi名称信息(iOS12)SSID
iOS12以后苹果为了加强app对于系统隐私的威胁的安全问题,特别要求开发者增加申请步骤
第一步,开发项目的Bundle identifier必须是付费的ID号在证书生成填写时

要选择获取Wi-Fi权限的选项
第二步,开发时必须使用拥有该权限的Bundle identifier去开发,还要开启该权限,如图

第三步就是调用老式的获取SSID(就是Wi-Fi名字的代码)
导入头文件: #import <NetworkExtension/NetworkExtension.h> //实现部分 - (void)getWifiList { if (![[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {return;} dispatch_queue_t queue = dispatch_queue_create("com.leopardpan.HotspotHelper", 0); [NEHotspotHelper registerWithOptions:nil queue:queue handler: ^(NEHotspotHelperCommand * cmd) { //kNEHotspotHelperCommandTypeFilterScanList:表示扫描到 Wifi 列表信息。 if(cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList) { //NEHotspotNetwork 里有如下信息:SSID:Wifi 名称;BSSID:站点的 MAC 地址;signalStrength: Wifi信号强度,该值在0.0-1.0之间;secure:网络是否安全 (不需要密码的 Wifi,该值为 false);autoJoined: 设备是否自动连接该 Wifi,目前测试自动连接以前连过的 Wifi 的也为 false ;justJoined:网络是否刚刚加入;chosenHelper:HotspotHelper是否为网络的所选助手 for (NEHotspotNetwork* network in cmd.networkList) { NSLog(@“+++++%@“,network.SSID); } } }]; }
参考:https://blog.csdn.net/CC1991_/article/details/80540858
后续:
因为iOS14之后,获取Wi-Fi信息的时候必须开启定位权限,不然无法获取到Wi-Fi信息,这个坑我也是找了好久。希望能帮到遇到同样问题的道友。
一定要在plist文件内添加这个键值对,不然还是无法获取Wi-Fi信息

if (@available(iOS 14.0, *)) {
BOOL isFullAccuracy = self.localmanager.accuracyAuthorization == CLAccuracyAuthorizationFullAccuracy;
if (!isFullAccuracy) {
// 向用户申请临时开启一次精确位置权限
[self.localmanager requestTemporaryFullAccuracyAuthorizationWithPurposeKey:@"WantsToGetWiFiSSID"];
}
[NEHotspotNetwork fetchCurrentWithCompletionHandler:^(NEHotspotNetwork * _Nullable currentNetwork) {
self.detail.ssid = currentNetwork.SSID;
self.detail.mac = currentNetwork.BSSID;
self.nameLb.text = currentNetwork.SSID;
}];
}else{
//获取当前所连接Wi-Fi数据
CFArrayRef myArray = CNCopySupportedInterfaces();
if(myArray !=nil) {
CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
if(myDict !=nil) {
NSDictionary*dict = (NSDictionary*)CFBridgingRelease(myDict);
NSLog(@"wifi的信息%@",dict);
ssid = [dict valueForKey:@"SSID"];
self.detail.ssid = ssid;
self.nameLb.text = ssid;
self.detail.mac = [dict valueForKey:@"BSSID"];
}
}
}
————————————————
版权声明:本文为CSDN博主「一粒沙-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ForeverMyheart/article/details/113887290
浙公网安备 33010602011771号