本文转载至 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. Java发送邮件----自己封装的方法

    发送邮件的封装类: package com.email; import java.util.Properties; import javax.mail.Authenticator; import ja ...

  2. hdu 5055(模拟)

    Bob and math problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. LeetCode OJ-- Edit Distance **

    https://oj.leetcode.com/problems/edit-distance/ 动态规划,它的小规模问题是:当 word1  word2都比较小的时候,word1变成 word2需要的 ...

  4. poj 1185 炮兵阵地 [经典状态压缩DP]

    题意:略. 思路:由于每个大炮射程为2,所以如果对每一行状态压缩的话,能对它造成影响的就是上面的两行. 这里用dp[row][state1][state2]表示第row行状态为state2,第row- ...

  5. 图解sql server 命令行工具sqlcmd的使用

    http://blog.csdn.net/bcbobo21cn/article/details/52260733

  6. Debugging that latch timeout

    https://troubleshootingsql.com/tag/stack-dump/ Book on Azure and SQL Server

  7. How To Install Oracle Forms 12c On Windows 7

    Below is the step by step guide to install Oracle Forms 12c on Windows 7. To install Oracle Forms 12 ...

  8. xshell登录到CentOS7上时出现“The remote SSH server rejected X11 forwarding request.

    其原因是肯能对openssh版本进行了升级. 解决方法为:         yum install xorg-x11-font* xorg-x11-xauth        /etc/ssh/sshd ...

  9. python的依赖性安全性检查

    1.safety 安装: pip install safety 使用: 检查整个系统的依赖包安全性safety check检查某个项目的依赖性安全safety check -r requirement ...

  10. mysql数据库查看各实例磁盘占用情况

    1.总体查看: use information_schema; select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' ...