ios5之前可以通過讀取設定檔擷取,ios5以後蘋果修改wifi列表檔案位置,只有root許可權才可以讀取.
ios4:/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager
ios5:/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration
官方的API沒有提供擷取掃描所有wifi列表,相近功能的只有CaptiveNetwork,擷取當前wifi的名稱。
引用標頭檔<SystemConfiguration/CaptiveNetwork.h>
/*! @function CNCopySupportedInterfaces @discussion copies a list of all interfaces CaptiveNetworkSupport is monitoring. @result An array of CFStringRef- BSD interface names. Returns NULL if an error was encountered. You MUST release the returned value. */CFArrayRefCNCopySupportedInterfaces(void)__OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_4_1);
通過CNCopySupportedInterfaces擷取wifi列表,實際測試中返回數組中只有一個值,即當前串連的wifi。
- (NSString *)currentWifiSSID { NSString *ssid = nil; NSArray *ifs = (__bridge id)CNCopySupportedInterfaces(); for (NSString *ifname in ifs) { NSDictionary *info = (__bridge id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname); if (info[@"SSIDD"]) { ssid = info[@"SSID"]; } } return ssid;}