最近做了一个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地址相关推荐

  1. android获取wifi mac地址吗,Android获取当前WiFi的MAC地址-适配所有版本

    ** Android获取当前WiFi的MAC地址 ** package com.dogness.platform.utils; import android.content.Context; impo ...

  2. 修改手机WIFI的MAC地址,实现防止路由器拉黑

    *修改手机WIFI的MAC地址* *说明:* 1.手机可以连接WIFI但是没有网速 2.知道密码,但连接不上,一般都是因为路由器给你拉黑或者限速了. *那么路由器是如何知道是你连接了:判断如下:登录路 ...

  3. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例

    这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...

  4. c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存...

    我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统 ...

  5. Android工具类——获取wifi模块MAC地址

    public class MacUtil {/*** 获取mac地址(适配所有Android版本)** @return*/public static String getMac(Context con ...

  6. Android获取手机及路由器的Mac地址和IP地址

    Android获取Mac地址及IP地址需要添加权限, 在AndroidManifest.xml中: <uses-permission android:name="android.per ...

  7. android p随机mac,android设备唯一码的获取,cpu号,mac地址

    抄自http://blog.csdn.net/hpccn/article/details/7872141 开发Android应用中,我们常常需要设备的唯一码来确定客户端. Android 中的几中方法 ...

  8. android动态mac地址,android 设备唯一码的获取,Cpu号,Mac地址

    赞0 开发Android应用中,我们常常需要设备的唯一码来确定客户端. Android 中的几中方法,使用中常常不可靠 1. DEVICE_ID 假设我们确实需要用到真实设备的标识,可能就需要用到DE ...

  9. 全志芯片 Wi-Fi/BT MAC地址定制

    问题背景 很多Wi-Fi/BT模组默认出厂是不带MAC地址的,整机厂需要根据需求,烧写特定的MAC地址. MAC地址通路 Linux-4.9后,全志平台模组MAC地址定制流程如下 系统启动后,引导程序 ...

最新文章

  1. easyui datagrid 每行数据添加 按钮
  2. 龙格库塔法基本C程序
  3. 【Delphi】从内存读取或解压压缩文件(RAR、ZIP、TAR、GZIP等)(二)
  4. 外媒:苹果明年上半年推出iPhone SE 3 支持5G搭载A14处理器
  5. Tomcat新版本旧版本下载(Windows和Linux)
  6. 【开源软件】windows环境下libcurl编译
  7. 握几次手就能拿下 HTTPS
  8. 正在等待继续编辑 - Python - 基础知识专题 - 配置文件与日志管理
  9. Windows 2012部署Exchange2013
  10. linux下文件打包、压缩详解
  11. 漫步微积分三十七——力和功
  12. 在eclipse上通过egit插件将代码发布到码云(https://gitee.com/)
  13. od另类调试php,[转] 另类基址搜索方法!好像是OD附加内存搜索工具 查找基址
  14. 蓝桥杯 单片机 决赛 第7届 电压、频率采集设备
  15. 手游代理平台官方最全解释
  16. 《自控力》第四章读书笔记
  17. 通用mapper——自定义搭配继承Mapper
  18. [wayfarer]PetShop数据访问层之数据库访问设计
  19. 时序数据库分析 - TimescaleDB时序数据库介绍
  20. 右移位和除以2(C++)

热门文章

  1. 写一篇 500 字的文章,主题关于 18 世纪哲学家大卫 • 休谟和恐怖悖论,即研究人们是如何从他们害怕的东西中获得乐趣的...
  2. vue----devtools安装教程
  3. 面试必问的CAS,你懂了吗?
  4. 支付宝新移动支付平台解析
  5. 时间轮(TimeWheel)的设计与实现
  6. [视觉SLAM十四讲]学习笔记2-关于欧拉角和万向锁
  7. mac电脑macOS常用软件必备软件命令行安装,史上最全mac插件2
  8. 兵士不克不及怂就是干!美服龙战上传说--新浪炉石传说专区
  9. 论文笔记1《基于ID3决策树改进算法的客户流失预测分析》
  10. git bisect 与 git blame