设为首页 收藏本站
查看: 1287|回复: 0

[经验分享] iPhone,iPad如何获取WIFI名称即SSID

[复制链接]

尚未签到

发表于 2015-10-1 10:46:58 | 显示全部楼层 |阅读模式
本文转载至 http://blog.iyunv.com/wbw1985/article/details/20530281
2010年开始苹果清理了一批APP Store上的WIFI扫描软件, 缘由语焉不详.
  这些WIFI扫描软件使用了苹果的私有函数apple80211.framework
  尽管不能合法(指能通过App Store的审核)的获取WIFI列表, 不过我们还是可以获取到当前Wifi连接的信息,比如SSID.
  SSID全称Service Set IDentifier, 即Wifi网络的公开名称.
  苹果在IOS v4.1+版本上提供了公开的方法来获取该信息.
  示范代码如下:
  



[plain] view plaincopy

http://static.blog.iyunv.com/scripts/ZeroClipboard/ZeroClipboard.swf

  • #import <SystemConfiguration/CaptiveNetwork.h>

  • - (id)fetchSSIDInfo
  • {
  •     NSArray *ifs = (id)CNCopySupportedInterfaces();
  •     NSLog(@"%s: Supported interfaces: %@", __func__, ifs);
  •     id info = nil;
  •     for (NSString *ifnam in ifs) {
  •         info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);
  •         NSLog(@"%s: %@ => %@", __func__, ifnam, info);
  •         if (info && [info count]) {
  •             break;
  •         }
  •         [info release];
  •     }
  •     [ifs release];
  •     return [info autorelease];
  • }

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



[plain] view plaincopy

http://static.blog.iyunv.com/scripts/ZeroClipboard/ZeroClipboard.swf

  • - (id)fetchSSIDInfo {
  •      NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
  •      NSLog(@"Supported interfaces: %@", ifs);
  •      id info = nil;
  •      for (NSString *ifnam in ifs) {
  •          info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
  •          NSLog(@"%@ => %@", ifnam, info);
  •          if (info && [info count]) { break; }
  •      }
  •      return info;
  • }

参考链接:  
  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以上版本提供了公开的方法来获取该信息.
  

  



[html] view plaincopy


http://static.blog.iyunv.com/scripts/ZeroClipboard/ZeroClipboard.swf

  • #import <SystemConfiguration/CaptiveNetwork.h>  




[html] view plaincopy


http://static.blog.iyunv.com/scripts/ZeroClipboard/ZeroClipboard.swf

  • -(id)fetchSSIDInfo
  • {
  •     NSArray *ifs = (id)CNCopySupportedInterfaces();  
  •     NSLog(@"%s: Supported interfaces: %@", __func__, ifs);
  •     id info = nil;  
  •     for (NSString *ifnam in ifs) {
  •         info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);  
  •         if (info && [info count]) {
  •             break;
  •         }
  •         [info release];
  •     }
  •     [ifs release];
  •     return [info autorelease];
  • }

  • - (NSString *)currentWifiSSID {
  •     // Does not work on the simulator.
  •     NSString *ssid = nil;  
  •     NSArray *ifs = (  id)CNCopySupportedInterfaces();  
  •     NSLog(@"ifs:%@",ifs);
  •     for (NSString *ifnam in ifs) {
  •         NSDictionary *info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);  
  •         NSLog(@"dici:%@",[info  allKeys]);
  •         if (info[@"SSIDD"]) {
  •             ssid = info[@"SSID"];  

  •         }
  •     }
  •     return ssid;
  • }

  • - (void)viewDidLoad
  • {
  •     [super viewDidLoad];

  •     tempLabel=[[UILabel alloc]initWithFrame:CGRectMake(50, 40, 200, 40)];  
  •     tempLabel.textAlignment=NSTextAlignmentCenter;  
  •     [self.view addSubview:tempLabel];
  •     NSDictionary *ifs = [self fetchSSIDInfo];  
  •     NSString *ssid = [[ifs objectForKey:@"SSID"] lowercaseString];  
  •     tempLabel.text=ssid;  

  • }
  
  log 信息 :
  



[html] view plaincopy


http://static.blog.iyunv.com/scripts/ZeroClipboard/ZeroClipboard.swf

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

ARC 版本:  
  



[html] view plaincopy


http://static.blog.iyunv.com/scripts/ZeroClipboard/ZeroClipboard.swf

  • - (id)fetchSSIDInfo {
  •     NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();  
  •     NSLog(@"Supported interfaces: %@", ifs);
  •     id info = nil;  
  •     for (NSString *ifnam in ifs) {
  •         info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);  
  •         NSLog(@"%@ => %@", ifnam, info);  
  •         if (info && [info count]) { break; }
  •     }
  •     return info;
  • }

  效果如下:  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-121240-1-1.html 上篇帖子: 开启和关闭wifi的代码段 下篇帖子: 安卓使用广播来监控Wifi状态
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表