??关注后回复 “进群” ,拉你进程序员交流群??

作者:掘金 形影相吊

一、应用背景

物联网开发中,对设备进行配网时需要打开手机的WiFi功能,并且连接上相应的设备WiFi热点,把家庭的WiFi名称和密码通过TCP连接或UDP广播的方式发送给设备。设备接入到家庭的WiFi名称和密码后就可以连接上家庭WiFi,将设备注册到云端,从而实现设备上云。那么在iOS中,我们如何获取手机当前连接的WiFi息呢?

二、前提

iOS中要获取手机当前连接的WiFi信息,iOS13.0之后必须先打开定位,iOS14.0之前还要打包精准位置,详情可以参考iOS精确位置,然后去设置APP连接上任意的WiFi。

三、获取方式1.获取SSID---WiFi名称+ (NSST.I.g *)getWifiSSID {

cf阿飞个人资料,cf阿飞是谁

NSStriNg *ssid = niL.

CFArRayRef arrRef = CNCopySupportedInterfAces;

NSArray *ifs = ( __B.idge id)arrRef;

for(NSString *ifnam inifs) {

CFDictionaryRef dicRef = CNCopyCurrentNetworK.nfo(( __bridge CFStringRef)ifnam);

NSDictionary *info = ( __bridge id)dicRef;

if(info[@ "BSSID"]) {

ssid = info[@ "SSID"];

}

if(dicRef !=nil) {

CFRelease(dicRef);

}

}

if(arrRef != nil) {

展开全文

CFRelease(arrRef);

}

returnssid;

}

2.获取BSSID---WiFi的MAC+ (NSString *)getWifiBSSID {

NSString *bssid = @ "";

CFArrayRef arrRef = CNCopySupportedInterfaces;

NSArray *ifs = ( __bridge id)arrRef;

for(NSString *ifnam inifs) {

CFDictionaryRef dicRef = CNCopyCurrentNetworKInfo(( __bridge CFStringRef)ifnam);

NSDictionary *info = ( __bridge id)dicRef;

if(info[@ "BSSID"]) {

bssid = info[@ "BSSID"];

}

if(dicRef != nil) {

CFRelease(dicRef);

}

}

if(arrRef != nil) {

CFRelease(arrRef);

}

returnbssid;

}

四、写在最后的重点

iOS中提供了快速获取手机当前连接的WiFi的信息,可以方便我们快速设置wifi信息和密码完成为智能设备的联网;但这只是其中的一种方式,而直接获取手机当前连接的wifi的方式也存在配网失败的风险。

目前部分的设备只支持2.4G频段的WiFi,5G频段的WiFi设备是无法完成联网操作的,而手机是可以同时支持2.4G和5G的;所以如果手机当前连接的是5G频段的WiFi,我们是无法使用其为设备完成联网操作的。这里提供一些其他设置配网wifi的方式:

1.手机输入WiFi名称:这种方式出错率太高,并且非常不友好,不过可以作为系统原因或用户设置原因(如未开启定位或精确位置时)导致无法通过上面的方法获取到手机连接的WiFi信息时的兜底方案;

2.模块支持搜索附近WiFi:这种方式需要设备内置的联网模块本身支持搜索附近的WiFi热点,并且最好同时支持蓝牙,可以方便通过蓝牙连接把设备搜索到的WiFi信息发送给手机app,手机端可以选择设置已经发现的热点,设置密码后即可进行对设备的配网。 这种方式就不要求手机是否开启定位,甚至不需要手机连接了WiFi,而且不用考虑是否是5G频段的WiFi,因为设备能搜索到的WiFi热点肯定也支持连接WiFi热点了; 不过这种方式成本高,需要设备同时支持WiFi模块和蓝牙模块。

1.手机输入WiFi名称:这种方式出错率太高,并且非常不友好,不过可以作为系统原因或用户设置原因(如未开启定位或精确位置时)导致无法通过上面的方法获取到手机连接的WiFi信息时的兜底方案;

cf阿飞个人资料,cf阿飞是谁

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备! 所有资料都整理到网盘了,欢迎下载!

面试题】即可获取

在看点这里好文分享给更多...↓↓