获取Wi-Fi的SSID

前几天做项目的时候,碰到一个问题,获取wifi的SSID,其实就是获取Wi-Fi的名字

iOS12以前

在iOS13之前获取wifi的SSID很简单,苹果提供了接口CNCopyCurrentNetworkInfo,直接调用就可以拿到了,附上代码:

-(NSString *)getSSIDWhenAuth {

  NSString *ssidNameStr = @"GET_SSID_FAILED";

  NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();

  for (NSString *ifname in ifs) {

    NSDictionary *ifDic = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);

    if(ifDic[@"SSID"]){

      ssidNameStr = ifDic[@"SSID"];

    }

  }

  return ssidNameStr;

}

是不是很简单,后来苹果处于对安全的考虑,这样是不行滴.

iOS12以后,Xcode11之前

在iOS 12中,经断点调试发现info为nil。猜测是CNCopyCurrentNetworkInfo方法在iOS 12中有了变化。通过查看官方文档,发现文档中增加了Important字样的描述:

Important To use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.
重要描述 在iOS 12+中使用此方法需要在Xcode中为应用授权获取WiFi信息的能力。授权后,Xcode会自动在App ID和应用的权限列表中增加获取WiFi信息的权限。
 
下面就开始操作
Xcode -> [Project Name] -> Targets -> [Target Name] -> Capabilities -> Access WiFi Information -> ON

按照上述方案操作完毕后,会发现工程的.entitlements文件中多了一对Key-Value

接下来就可以正常获取ssid了,不过我现在环境是iOS13+,Xcode11+,发现Xcode没有Access WiFi Information开关了,查了很多资料,需要在开发者账号里配置.

iOS12以后,Xcode11之后,重新创建证书

步骤1、登录开发者账号

步骤2、钥匙串生成CSR文件

步骤3、创建证书

 

 

 

 

步骤4:创建完下载证书双击安装到Xcode

步骤5:

双击2位置,这时会在下面多出一条Access WiFi Information,这时就可以正常获取到ssid了.

原文地址:https://www.cnblogs.com/striveLD/p/12797254.html