获取Wi-Fi的SSID

Posted striveld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取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了.

技术图片

 

以上是关于获取Wi-Fi的SSID的主要内容,如果未能解决你的问题,请参考以下文章

ESP8266 SmartConfig一键配网

L4158如何连接小米

家里除了手机以外其他设备突然都连不上Wi-Fi了,一开始以为笔记本电脑?

无法从 NodeMCU 板连接到 Wi-Fi 网络

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台

我无法通过 WIFI 连接到 WI-FI DIRECT 制作的接入点