时间:2021-05-20
前言
SSID全称Service Set IDentifier, 即Wifi网络的公开名称.在IOS 4.1以上版本提供了公开的方法来获取该信息.
但是最近,Apple于北京时间9月17日晚在官网发布了Xcode 10正式版,QiShare团队成员于9月18日中午统一升级以对现有项目做适配。期间,作者发现某项目使用Xcode 10编译出的App在iOS 12中无法获取WiFi的SSID。
敲黑板:获取WiFi的SSID是智能硬件App中配网模块的常用功能,各大厂商要针对iOS 12适配一波了(@huawei.com; @mi.com; @360.com; @jd.com; @baidu.com; @orvibo.com; @scinan.com; ...)。
获取WiFi的SSID的方法如下:
+ (NSString *)wifiSSID { NSString *ssid = nil; NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces(); for (NSString *ifnam in ifs) { NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam); if (info[@"SSID"]) { ssid = info[@"SSID"]; } } return ssid;}在iOS 12中,经断点调试发现info为nil。猜测是CNCopyCurrentNetworkInfo方法在iOS 12中有了变化。通过查看官方文档,发现文档中增加了Important字样的描述:
CNCopyCurrentNetworkInfo文档
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信息的权限。
解决方法
看到这里,解决方案就有了:Xcode -> [Project Name] -> Targets -> [Target Name] -> Capabilities -> Access WiFi Information -> ON
解决方案步骤图示
按照上述方案操作完毕后,会发现工程的.entitlements文件中多了一对Key-Value:
.entitlements文件
至此,就能在iOS 12+中正常获取到WiFi的SSID了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
级别: ★☆☆☆☆
标签:「iOS 12」「SSID」「Access WiFi Information」「CNCopyCurrentNetworkInfo」
作者: Xs·H
审校: QiShare团队
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android编程获取Wifi名称(SSID)的方法。分享给大家供大家参考,具体如下:可以使用WifiManager和WifiInfo来获取当前W
有时候为了防止他人蹭网,我们通常会在无线路由器中设置隐藏SSID,让笔记本、智能手机/平板等设备无法搜索到可用的Wifi无线网络,不过路由器设置隐藏SSID后,
SSID一词相信很多朋友又陌生又熟悉,陌生在于我们日常很少会提到SSID一词,熟悉在于在路由器设置中,我们会看到有SSID设置,并且每个使用Wifi无线网络
升级到iOS13以后,发现之前获取WiFi名称的接口失效了,返回的都是固定值"WLAN"。这里可能是因为苹果对用户隐私保护问题,因为通过wifi信息可以定位到用
7月4日凌晨,苹果发布了最新的iOS12beta3,相比上一个iOS12beta2主要修复了Bug,并提升了稳定性。那么,iOS12bete3和beta2区别大