iOS 获取连接的WiFi和Mac地址
最近做了一个WiFi的硬件APP,需要用到当前手机链接的WiFi名字和Mac地址,这种场景使用,其实,在打卡软件中,应该比较常用,比如打卡需要连接到公司的WiFi,就是保证你在办公室打的卡。
刚开始使用的时候,以为就像别人说的需要,想苹果申请访问权限,实际上如果只是想获取当前访问的WiFi名称和Mac地址,是不用申请的。
使用
需要添加系统库SystemConfiguration.framework,并且,在需要使用的文件中引用#import <SystemConfiguration/CaptiveNetwork.h>
CFArrayRef __nullable CNCopySupportedInterfaces (void)API_AVAILABLE(macos(10.8), ios(4.1)) API_UNAVAILABLE(tvos, watchos);
CFDictionaryRef __nullable CNCopyCurrentNetworkInfo (CFStringRef interfaceName) API_AVAILABLE(ios(4.1)) API_UNAVAILABLE(macos, tvos, watchos);
kCNNetworkInfoKeySSIDData ->当前的SSID,CFData格式
kCNNetworkInfoKeySSID ->当前连接的WiFi的名字 CFString格式
kCNNetworkInfoKeyBSSID->当前WiFi的Mac地址 CFString格式
-(void)getWiFiInfo{
NSArray * supports = (__bridge_transfer id)CNCopySupportedInterfaces();
id SSID = nil;//WiFi标示
id BSSID = nil;
id info = nil;
id SSIDDATA = nil;
for(NSString * idf in supports){
info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((CFStringRef)idf);
if (info&&[info count]) {
break;
}
}
SSID = [info objectForKey:@"SSID"];
BSSID = [info objectForKey:@"BSSID"];
SSIDDATA = [info objectForKey:@"SSIDDATA"];
// NSData * data = (__bridge NSData*)SSIDDATA;
NSLog(@"%@",[[NSString alloc]initWithData:SSIDDATA encoding:NSUTF8StringEncoding]);
NSLog(@"SSID***%@",SSID);
NSLog(@"BSSID***%@",BSSID);
NSLog(@"SSIDDATA***%@",SSIDDATA);
}
遇见的坑:iOS 12.0以上 在调试时,发现获取的数据是nil,这是因为iOS12.0系统对方法CNCopyCurrentNetworkInfo做了变更,可以查看苹果的开发者文档。
也就是说iOS 12.0以上,如果需要访问WiFi信息的话,可以在bundleID里面,开通Access WIFi Information功能,同时,也需要在你的项目打开这个功能。
解决方案:
Xcode -> [Project Name] -> Targets -> [Target Name] -> Capabilities -> Access WiFi Information -> ON
工程中会多了一个.entitlements文件
iOS 获取连接的WiFi和Mac地址相关推荐
- android获取wifi mac地址吗,Android获取当前WiFi的MAC地址-适配所有版本
** Android获取当前WiFi的MAC地址 ** package com.dogness.platform.utils; import android.content.Context; impo ...
- 修改手机WIFI的MAC地址,实现防止路由器拉黑
*修改手机WIFI的MAC地址* *说明:* 1.手机可以连接WIFI但是没有网速 2.知道密码,但连接不上,一般都是因为路由器给你拉黑或者限速了. *那么路由器是如何知道是你连接了:判断如下:登录路 ...
- python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例
这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...
- c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存...
我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统 ...
- Android工具类——获取wifi模块MAC地址
public class MacUtil {/*** 获取mac地址(适配所有Android版本)** @return*/public static String getMac(Context con ...
- Android获取手机及路由器的Mac地址和IP地址
Android获取Mac地址及IP地址需要添加权限, 在AndroidManifest.xml中: <uses-permission android:name="android.per ...
- android p随机mac,android设备唯一码的获取,cpu号,mac地址
抄自http://blog.csdn.net/hpccn/article/details/7872141 开发Android应用中,我们常常需要设备的唯一码来确定客户端. Android 中的几中方法 ...
- android动态mac地址,android 设备唯一码的获取,Cpu号,Mac地址
赞0 开发Android应用中,我们常常需要设备的唯一码来确定客户端. Android 中的几中方法,使用中常常不可靠 1. DEVICE_ID 假设我们确实需要用到真实设备的标识,可能就需要用到DE ...
- 全志芯片 Wi-Fi/BT MAC地址定制
问题背景 很多Wi-Fi/BT模组默认出厂是不带MAC地址的,整机厂需要根据需求,烧写特定的MAC地址. MAC地址通路 Linux-4.9后,全志平台模组MAC地址定制流程如下 系统启动后,引导程序 ...
最新文章
- easyui datagrid 每行数据添加 按钮
- 龙格库塔法基本C程序
- 【Delphi】从内存读取或解压压缩文件(RAR、ZIP、TAR、GZIP等)(二)
- 外媒:苹果明年上半年推出iPhone SE 3 支持5G搭载A14处理器
- Tomcat新版本旧版本下载(Windows和Linux)
- 【开源软件】windows环境下libcurl编译
- 握几次手就能拿下 HTTPS
- 正在等待继续编辑 - Python - 基础知识专题 - 配置文件与日志管理
- Windows 2012部署Exchange2013
- linux下文件打包、压缩详解
- 漫步微积分三十七——力和功
- 在eclipse上通过egit插件将代码发布到码云(https://gitee.com/)
- od另类调试php,[转] 另类基址搜索方法!好像是OD附加内存搜索工具 查找基址
- 蓝桥杯 单片机 决赛 第7届 电压、频率采集设备
- 手游代理平台官方最全解释
- 《自控力》第四章读书笔记
- 通用mapper——自定义搭配继承Mapper
- [wayfarer]PetShop数据访问层之数据库访问设计
- 时序数据库分析 - TimescaleDB时序数据库介绍
- 右移位和除以2(C++)
热门文章
- 写一篇 500 字的文章,主题关于 18 世纪哲学家大卫 • 休谟和恐怖悖论,即研究人们是如何从他们害怕的东西中获得乐趣的...
- vue----devtools安装教程
- 面试必问的CAS,你懂了吗?
- 支付宝新移动支付平台解析
- 时间轮(TimeWheel)的设计与实现
- [视觉SLAM十四讲]学习笔记2-关于欧拉角和万向锁
- mac电脑macOS常用软件必备软件命令行安装,史上最全mac插件2
- 兵士不克不及怂就是干!美服龙战上传说--新浪炉石传说专区
- 论文笔记1《基于ID3决策树改进算法的客户流失预测分析》
- git bisect 与 git blame