苹果提供了NetworkExtension框架让开发者实现VPN以及WiFi热点相应的功能,虽然iOS9系统出来之后,这个框架的很多功能被苹果屏蔽了,需要申请权限才能用,但是本篇简单的获取WiFi名字和mac地址信息的方法还是可以用的。 获取WiFi相关信息的时候需要引入一下头文件

#import <SystemConfiguration/CaptiveNetwork.h>
#import <NetworkExtension/NetworkExtension.h>
复制代码

要拿到手机的WiFi名字和WiFi的mac地址我们只需要用到CNCopySupportedInterfacesCNCopyCurrentNetworkInfo两个类,实现方法如下:

1、获取SSID(Service Set Identifier),服务集标识,也就是WiFi网络所取的名字。

+ (NSString *)wifiName
{NSArray *ifs = CFBridgingRelease(CNCopySupportedInterfaces());id info = nil;for (NSString *ifname in ifs) {info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((CFStringRef) ifname);if (info && [info count]) {break;}}NSDictionary *dic = (NSDictionary *)info;NSString *ssid = [[dic objectForKey:@"SSID"] lowercaseString];return ssid;
}
复制代码

2、获取BSSID即mac地址。

+ (NSString *)wifiMac
{NSArray *ifs = CFBridgingRelease(CNCopySupportedInterfaces());id info = nil;for (NSString *ifname in ifs) {info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((CFStringRef) ifname);if (info && [info count]) {break;}}NSDictionary *dic = (NSDictionary *)info;NSString *bssid = [dic objectForKey:@"BSSID"];return bssid;
}
复制代码

获取到的结果如下:

SSID = mywifiname
BSSID = e3:fc:40:38:ac:e6
复制代码

这个方法在iOS12以下的系统完全可以胜任我们的任务,但是iOS12+的系统无法正常获取到WiFi信息。苹果对方法的使用提升了要求。

Important
To use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.
重要描述
在iOS 12+中使用此方法需要在Xcode中为应用授权获取WiFi信息的能力。授权后,Xcode会自动在App ID和应用的权限列表中增加获取WiFi信息的权限。

通过上面我们可以了解到,要在iOS12以上的系统中继续使用方法,就需要获取授权。如果你使用的是自动签名,授权之后Xcode会自动在App ID和应用的权限列表中增加WiFi的权限。如果你使用的是手动签名,可能还需要去App ID中配置一下权限,并生成新的profile文件。
具体的操作如下
设置Capabilities步骤:Target ->Capabilities -> Access WiFi Information -> ON

如果项目使用的是手动签名,上面打开Access WiFi Information之后,可能Add the Access WiFi Information feature to your App ID这一项会报错,需要手动去App ID账号中设置。
打开Access WiFi Information之后,工程会在.entitlements文件中添加Access WiFi Information信息,如果没有.entitlements文件会同时创建文件。配置好上面的信息,在iOS12+的系统中获取WiFi名字和mac信息的方法就可以正常获取信息了。
如果采用的是手动签名,App ID中配置Access WiFi Information的方法如下,编辑App ID,勾选相应的选项。然后重新生成项目的Provisioning Profiles文件,包括Distribution的和Development的,下载之后双击打开,项目就可以正常签名,并获取到WiFi信息了。

小编这呢,给大家推荐一个优秀的iOS交流平台,平台里的伙伴们都是非常优秀的iOS开发人员,我们专注于技术的分享与技巧的交流,大家可以在平台上讨论技术,交流学习。欢迎大家的加入(想要进入的可加小编微信15673450590)。

转载于作者:CircusJonathan
链接:www.jianshu.com/p/1b29dc879…

转载于:https://juejin.im/post/5d2edd555188251b022b45fb

获取iOS设备WiFi名字和mac地址+iOS12系统获取失败解决相关推荐

  1. ios12后获取iOS设备WiFi名字和mac地址

    苹果提供了NetworkExtension框架让开发者实现VPN以及WiFi热点相应的功能,虽然iOS9系统出来之后,这个框架的很多功能被苹果屏蔽了,需要申请权限才能用,但是本篇简单的获取WiFi名字 ...

  2. php获取网卡mac地址吗,php获取网卡MAC地址步骤详解

    这次给大家带来php获取网卡MAC地址步骤详解,php获取网卡MAC地址的注意事项有哪些,下面就是实战案例,一起来看一下. php获取网卡的物理地址,即mac地址.<?php /** 获取网卡的 ...

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

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

  4. iOS 14获取不到WiFi名字的解决方法

    每次iOS系统版本升级,都会带来一些变化,就像获取手机当前的WiFi名字,iOS13需要用户允许获取位置信息才能获得WiFi名字 用旧的CNCopyCurrentNetworkInfo不知道为什么没拿 ...

  5. Mac如何获取iOS设备信息?

    Mac如何获取iOS设备信息? 1.通过shell命令 brew install libimobiledevice idevice_id -l 2.通过Xcode 打开Xcode>连接iOS设备 ...

  6. 通过Safari与mobileconfig获取iOS设备UDID(设备唯一标识符)

    本文基于在线安装Profile来实现获取UDID. 先看下效果,真机打开 获取设备UDID 科普 UDID UDID (Unique Device Identifier),唯一标示符,是iOS设备的一 ...

  7. 通过Safari浏览器获取iOS设备UDID(设备唯一标识符)

    通过Safari与mobileconfig获取iOS设备UDID(设备唯一标识符) 科普:U D I D (Unique Device Identifier),唯一标示符,是iOS设备的一个唯一识别码 ...

  8. airserver怎么下载使用?IOS设备无线传送到Mac电脑的屏幕上教程

    AirSever是一种通用的镜像接收器,非常适合镜像iPhone或Android视频文件. 它可以将简单的大屏幕或投影仪变成通用的屏幕镜像接收器. 使用启用了AirSever的设备,您可以用户拥有iP ...

  9. 获取iOS设备的型号

    2019独角兽企业重金招聘Python工程师标准>>> 三种常用的办法获取iOS设备的型号: 1. [UIDevice currentDevice].model (推荐): 2. u ...

最新文章

  1. 【实习】京东搜索相关性算法部门
  2. OPKG 软件包管理
  3. python面试-Python面试题(整理)
  4. Apache地址重写的几个问题
  5. 如果你在北京失业了,别怕,记得去领这笔钱!最少2034元/月!
  6. listview bcb 行的颜色_文明交通安全行手抄报简单又漂亮
  7. 软考中项20140309作业
  8. Ubuntu配置Typora和picgo
  9. 【渝粤教育】国家开放大学2018年秋季 0321-21T学前心理学 参考试题
  10. xamarin UWP ActivityIndicator
  11. linux fcitx-rime导入搜狗词库
  12. java代码实现雷达图_雷达图的一种实现! Cocos Creator !
  13. PubYun动态域名
  14. 万年历实验报告单片机C语言,单片机电子实时时钟 万年历系统 综合实验报告下载...
  15. 产品思维 的四大组成部分
  16. win7计算机里不显示摄像头,win7系统不显示摄像头的解决方法
  17. Java网络 1.3 开发工具介绍
  18. 巴菲特财富人生精华版
  19. js技术输入框中输入身份证号自动带出年龄,生日,性别
  20. OpenCV调试利器——Image Watch插件的安装和使用

热门文章

  1. 不同算法下校准曲线对比
  2. 如果你是滴滴的产品经理,你会怎么做
  3. 【unity】建一个传送门
  4. scp、rsync与集群分发
  5. 读取文件报错:FileNotFoundError: [Errno 2] No such file or directory
  6. 时间戳转换成年月日时分秒
  7. 音频特征提取——librosa工具包使用
  8. php段错误coredumped,yum提示“段错误 (core dumped)”的解决方法
  9. python输出一首诗_用Python自动生成藏头诗
  10. matlab 角谱传播,复振幅分布的角谱及角谱的传播.ppt