SID全稱Service Set IDentifier, 即Wifi網(wǎng)絡(luò)的公開名稱.在IOS 4.1以上版本提供了公開的方法來獲取該信息.
但是最近,Apple于北京時間9月17日晚在官網(wǎng)發(fā)布了Xcode 10正式版,老司機團隊成員在第一時間對現(xiàn)有項目做適配。期間,作者發(fā)現(xiàn)某項目使用Xcode 10編譯出的App在iOS 12中無法獲取WiFi的SSID。
獲取WiFi的SSID的方法如下:
-(NSString *)wifi{
//wifi名稱
NSString *strWifiName = @"";
CFArrayRef wifiInterfaces = CNCopySupportedInterfaces();
if(wifiInterfaces){
NSArray *arrInterface = (__bridge NSArray *)wifiInterfaces;
for (NSString *interfaceName in arrInterface) {
CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName));
if(dictRef){
NSDictionary *networkInfo = (__bridge NSDictionary *)dictRef;
strWifiName = [networkInfo objectForKey:(__bridge NSString *)kCNNetworkInfoKeySSID];
CFRelease(dictRef);
}
}
CFRelease(wifiInterfaces);
}
return strWifiName;
}
在iOS 12中,經(jīng)斷點調(diào)試發(fā)現(xiàn)info為nil。猜測是CNCopyCurrentNetworkInfo方法在iOS 12中有了變化。通過查看官方文檔,發(fā)現(xiàn)文檔中增加了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中為應(yīng)用授權(quán)獲取WiFi信息的能力。授權(quán)后,Xcode會自動在App ID和應(yīng)用的權(quán)限列表中增加獲取WiFi信息的權(quán)限。
看到這里就知道如何解決這個問題了.
1.開發(fā)者中心配置權(quán)限,重新下載證書到本地


配置結(jié)束后,重新運行,就可以獲取到WIFI的SSID了