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信息

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  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

 

posted on   高彰  阅读(3561)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示