iPhone,iPad如何获取WIFI名称即SSID
这些WIFI扫描软件使用了苹果的私有函数apple80211.framework
尽管不能合法(指能通过App Store的审核)的获取WIFI列表, 不过我们还是可以获取到当前Wifi连接的信息,比如SSID.
SSID全称Service Set IDentifier, 即Wifi网络的公开名称.
苹果在IOS v4.1+版本上提供了公开的方法来获取该信息.
示范代码如下:
- #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版本, 代码可简化如下:
- - (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以上版本提供了公开的方法来获取该信息.
- #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);
- 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 信息 :
- 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 版本:
- - (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;
- }
效果如下:
iPhone,iPad如何获取WIFI名称即SSID的更多相关文章
- 如何获取wifi名称(SSID)
@import SystemConfiguration.CaptiveNetwork; /** Returns first non-empty SSID network info dictionary ...
- Swift3 获取当前连接WIFI名称
1.导入库 import SystemConfiguration import SystemConfiguration.CaptiveNetwork 2.方法 /// 获取wifi名称 /// /// ...
- iOS 12中无法获取WiFi的SSID了?
1.现象描述 2018年苹果升级iOS12之后,没有办法获取wifi名称等信息. 2.获取wifi信息 2.1 获取代码 /************ 控制器的view 加载完毕 的时候调用 ***** ...
- iOS开发中获取WiFi相关信息
iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...
- 获取iOS设备信息(内存/电量/容量/型号/IP地址/当前WIFI名称)
1.获取电池电量(一般用百分数表示,大家自行处理就好) 1 2 3 4 -(CGFloat)getBatteryQuantity { return [[UIDevice current ...
- 获取WIFI的SSID和本机IP
1.获取WIFI的SSID 引入库 #import <SystemConfiguration/CaptiveNetwork.h> ..... ..... // WIFI的名字 + (NSS ...
- ios 获取当前wifi名称
ios5之前可以通过读取配置文件获取,ios5以后苹果修改wifi列表文件位置,只有root权限才可以读取. ios4:/System/Library/SystemConfiguration/WiFi ...
- iOS 12中获取WiFi的SSID
开始搞智能家居,wifi获取不到了?? 小插曲 旧方法失效,19-12-15更新,ios13开始需要请求定位信息 SSID全称Service Set IDentifier, 即Wifi网络的公开名称. ...
- Android获取当前连接的wifi名称
首先AndroidMainfest.xml文件里加入权限: <uses-permission android:name="android.permission.ACCESS_NETWO ...
随机推荐
- Java线程池ThreadPoolExecutor类源码分析
前面我们在java线程池ThreadPoolExecutor类使用详解中对ThreadPoolExector线程池类的使用进行了详细阐述,这篇文章我们对其具体的源码进行一下分析和总结: 首先我们看下T ...
- centos7下使用wget命令安装mysql
1.首先安装wget命令: yum -y install wget 2.下载mysql wget http://repo.mysql.com/mysql-community-release-el7- ...
- Understanding Objective-C Blocks
The aim of this tutorial is to give a gentle introduction to Objective-C blocks while paying special ...
- HDU1421
提交啦n次一直WA,这个bug找啦几个小时,最终才发现数组开小啦,真是遗憾.这是一个典型的DP问题,题目要求从n个中选出k对使得最终疲劳度最小.首先对物品质量a[n]进行一次排序,用dp[i][j]表 ...
- 报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 1>
这段时间忙于看文献,没用过VS了. 今天用着用着就报错了: LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 1> 问度娘,大神给出了解决方法 ...
- myeclipse执行tomcat报错Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
将myeclipse所配置的tomcat的jdk进行设置:-Xms512m -Xmx512m -XX:MaxNewSize=512m -XX:MaxPermSize=512m,例如以下图:
- DevExpress控件之TreeList
基于v18.1 使用AppendNode方法手动赋值时,首先要添加treeListColumn 默认样式 修改后的样式 1 ...
- 客户推广微信小程序的几种方法如下
一.店面二维码推广 1.店铺门口张贴 2.餐桌.柜台张贴 3.展架.海报宣传展示 二.结合促销活动,宣传单页上印小程序二维码线下派发 三.餐厅送餐时附带点餐小卡片,印小程序二维码 四.首次扫码立送积分 ...
- InnoDB Insert(插入)操作(下)--mysql技术内幕
接上一篇文章,最后做的那个实验,我是想证明mysql innodb存储引擎,commit操作与flush数据到磁盘之间的关系,当与同事交流之后,他说,你应该把innodb_buffer_size的大小 ...
- 如何在VS2010中添加ActiveX控件及使用方法
方法1: 1.首先在在项目上面右击添加类,如下图所示: 2.点击添加ActiveX控件中的MFC类 3.找到需要添加的ActiveX类. 4.点击完成即可. 5.此时转到资源视图,打开如下视图.可能工 ...