获取WiFi的SSID的方法如下:
+ (NSString*)wifiSSID {
NSString*ssid =nil;
NSArray*wifiArray = (__bridge_transferid)CNCopySupportedInterfaces();
for(NSString*wifiName in wifiArray)
{
NSDictionary*info = (__bridge_transferid)CNCopyCurrentNetworkInfo((__bridgeCFStringRef)wifiName);
if(info[@"SSID"])
{
ssid = info[@"SSID"];
}
}
return ssid;
}
在iOS 12中,经断点调试发现info为nil。猜测是CNCopyCurrentNetworkInfo方法在iOS 12中有了变化。
重要描述
在iOS 12+中使用此方法需要在Xcode中为应用授权获取WiFi信息的能力。授权后,Xcode会自动在App ID和应用的权限列表中增加获取WiFi信息的权限。
解决方法如下:Xcode -> Targets -> Capabilities -> Access WiFi Information -> 打开
按照上述方案操作完毕后,会发现工程的.entitlements文件中多了一对Key-Value:
至此,就能在iOS 12+中正常获取到WiFi的SSID了。
网友评论