本文转载至 http://blog.csdn.net/wbw1985/article/details/20530281 
2010年开始苹果清理了一批APP Store上的WIFI扫描软件, 缘由语焉不详.

这些WIFI扫描软件使用了苹果的私有函数apple80211.framework

尽管不能合法(指能通过App Store的审核)的获取WIFI列表, 不过我们还是可以获取到当前Wifi连接的信息,比如SSID.

SSID全称Service Set IDentifier, 即Wifi网络的公开名称.

苹果在IOS v4.1+版本上提供了公开的方法来获取该信息.

示范代码如下:

  1. #import <SystemConfiguration/CaptiveNetwork.h>
  2. - (id)fetchSSIDInfo
  3. {
  4. NSArray *ifs = (id)CNCopySupportedInterfaces();
  5. NSLog(@"%s: Supported interfaces: %@", __func__, ifs);
  6. id info = nil;
  7. for (NSString *ifnam in ifs) {
  8. info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);
  9. NSLog(@"%s: %@ => %@", __func__, ifnam, info);
  10. if (info && [info count]) {
  11. break;
  12. }
  13. [info release];
  14. }
  15. [ifs release];
  16. return [info autorelease];
  17. }

对于ARC版本, 代码可简化如下:

  1. - (id)fetchSSIDInfo {
  2. NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
  3. NSLog(@"Supported interfaces: %@", ifs);
  4. id info = nil;
  5. for (NSString *ifnam in ifs) {
  6. info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
  7. NSLog(@"%@ => %@", ifnam, info);
  8. if (info && [info count]) { break; }
  9. }
  10. return info;
  11. }

参考链接:

1. http://stackoverflow.com/questions/5198716/iphone-get-ssid-without-private-library

2. http://answers.yahoo.com/question/index?qid=20100529040141AAKd8dO

SSID全称Service Set IDentifier, 即Wifi网络的公开名称.在IOS 4.1以上版本提供了公开的方法来获取该信息.

  1. #import <SystemConfiguration/CaptiveNetwork.h>
  1. -(id)fetchSSIDInfo
  2. {
  3. NSArray *ifs = (id)CNCopySupportedInterfaces();
  4. NSLog(@"%s: Supported interfaces: %@", __func__, ifs);
  5. id info = nil;
  6. for (NSString *ifnam in ifs) {
  7. info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);
  8. if (info && [info count]) {
  9. break;
  10. }
  11. [info release];
  12. }
  13. [ifs release];
  14. return [info autorelease];
  15. }
  16. - (NSString *)currentWifiSSID {
  17. // Does not work on the simulator.
  18. NSString *ssid = nil;
  19. NSArray *ifs = (  id)CNCopySupportedInterfaces();
  20. NSLog(@"ifs:%@",ifs);
  21. for (NSString *ifnam in ifs) {
  22. NSDictionary *info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);
  23. NSLog(@"dici:%@",[info  allKeys]);
  24. if (info[@"SSIDD"]) {
  25. ssid = info[@"SSID"];
  26. }
  27. }
  28. return ssid;
  29. }
  30. - (void)viewDidLoad
  31. {
  32. [super viewDidLoad];
  33. tempLabel=[[UILabel alloc]initWithFrame:CGRectMake(50, 40, 200, 40)];
  34. tempLabel.textAlignment=NSTextAlignmentCenter;
  35. [self.view addSubview:tempLabel];
  36. NSDictionary *ifs = [self fetchSSIDInfo];
  37. NSString *ssid = [[ifs objectForKey:@"SSID"] lowercaseString];
  38. tempLabel.text=ssid;
  39. }

log 信息 :

  1. 2013-06-05 21:39:14.357 wifiNameDemo[9877:707] dici:{
  2. BSSID = "f4:ec:38:40:cc:e8";
  3. SSID = "Nice_Apple";
  4. SSIDDATA = <4e696365 5f417070 6c65>;
  5. }
  6. 2013-06-05 21:39:14.360 wifiNameDemo[9877:707] Nice_Apple

ARC 版本:

  1. - (id)fetchSSIDInfo {
  2. NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
  3. NSLog(@"Supported interfaces: %@", ifs);
  4. id info = nil;
  5. for (NSString *ifnam in ifs) {
  6. info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
  7. NSLog(@"%@ => %@", ifnam, info);
  8. if (info && [info count]) { break; }
  9. }
  10. return info;
  11. }

效果如下:

iPhone,iPad如何获取WIFI名称即SSID的更多相关文章

  1. 如何获取wifi名称(SSID)

    @import SystemConfiguration.CaptiveNetwork; /** Returns first non-empty SSID network info dictionary ...

  2. Swift3 获取当前连接WIFI名称

    1.导入库 import SystemConfiguration import SystemConfiguration.CaptiveNetwork 2.方法 /// 获取wifi名称 /// /// ...

  3. iOS 12中无法获取WiFi的SSID了?

    1.现象描述 2018年苹果升级iOS12之后,没有办法获取wifi名称等信息. 2.获取wifi信息 2.1 获取代码 /************ 控制器的view 加载完毕 的时候调用 ***** ...

  4. iOS开发中获取WiFi相关信息

    iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...

  5. 获取iOS设备信息(内存/电量/容量/型号/IP地址/当前WIFI名称)

    1.获取电池电量(一般用百分数表示,大家自行处理就好) 1 2 3 4 -(CGFloat)getBatteryQuantity {         return [[UIDevice current ...

  6. 获取WIFI的SSID和本机IP

    1.获取WIFI的SSID 引入库 #import <SystemConfiguration/CaptiveNetwork.h> ..... ..... // WIFI的名字 + (NSS ...

  7. ios 获取当前wifi名称

    ios5之前可以通过读取配置文件获取,ios5以后苹果修改wifi列表文件位置,只有root权限才可以读取. ios4:/System/Library/SystemConfiguration/WiFi ...

  8. iOS 12中获取WiFi的SSID

    开始搞智能家居,wifi获取不到了?? 小插曲 旧方法失效,19-12-15更新,ios13开始需要请求定位信息 SSID全称Service Set IDentifier, 即Wifi网络的公开名称. ...

  9. Android获取当前连接的wifi名称

    首先AndroidMainfest.xml文件里加入权限: <uses-permission android:name="android.permission.ACCESS_NETWO ...

随机推荐

  1. 交换机的MAC地址作用

    交换机的MAC地址在交换机进行数据交换时是没有作用的,因为交换机并不对转发的数据帧进行拆包重封装. 如果只是完成数据帧交换,则可以不要MAC地址(仅指二层交换机,三层交换机完成路由功能自然每个端口得有 ...

  2. 注意这几点,轻轻松松配置 Nginx + Tomcat 的集群和负载均衡

    Tomcat 集群是当单台服务器达到性能瓶颈,通过横向扩展的方式提高整体系统性能的有效手段.Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,可以通过简单的配置实现 Tomcat 集群 ...

  3. Axure基础操作

    一  简介 Axure RP就是一个快速原型(Rapid Prototyping)设计工具. 快速原型(快速模型demo)在真正的开发之前,构造一个原型.把需求模块进行落实.实现部分交互. 二  Ax ...

  4. Elasticsearch本地环境安装和常用操作

    本篇文章首发于我的头条号Elasticsearch本地环境安装和常用操作,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干 ...

  5. getenv, _wgetenv

    Description The C library function char *getenv(const char *name) searches for the environment strin ...

  6. 在Android中实现阴影效果

    在Android L推出后,Google提出了全新的设计语言:材质设计.其中很重要的一点就是阴影效果的使用,你可以为每一个View设置一个elevation值,相当于除了x.y之外的z值,z值决定了阴 ...

  7. centos7的时间同步机制:chrony使用

    配置时间同步方法如下: 1.安装chrony时间同步服务(系统默认安装) #yum install chrony 可以先查询一下是否有安装: [root@localhost etc]# rpm -qa ...

  8. rsync一些常用的命令

    渗透测试的时候会遇到RSYNC 匿名访问 在对一些大型互联网进行测试的时候经常会遇到rsync. 什么是Rsync Rsync(remote synchronize)是一个远程数据同步工具,可通过LA ...

  9. 使用jquey的css()方法改变样式,

    $("#tip").css("display","none"); $("#tip").css("display ...

  10. jquery实现图片的依次加载图片

    css代码: ul#portfolio{margin:0;padding:0;} ul#portfolio li{float:left;margin:0 5px 0 0;width:250px;hei ...