在iOS 12中无法获取WiFi的SSID了?解决以下方案

获取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 -> 打开


在iOS 12中无法获取WiFi的SSID了?解决以下方案_第1张图片

按照上述方案操作完毕后,会发现工程的.entitlements文件中多了一对Key-Value:


在iOS 12中无法获取WiFi的SSID了?解决以下方案_第2张图片

至此,就能在iOS 12+中正常获取到WiFi的SSID了。

你可能感兴趣的:(在iOS 12中无法获取WiFi的SSID了?解决以下方案)