SSID 全稱 Service Set IDentifier
CNCopySupportedInterfaces 核心代碼
- (void)testWifiInfo{
NSDictionary *currentWifiInfo = nil;
// 獲取當前的interface 數組
// CNCopyCurrentNetworkInfo()
CFArrayRef currentInterfaces = CNCopySupportedInterfaces();
if (!currentInterfaces) {
return ;
}
NSArray *interfaces = (__bridge NSArray *)(currentInterfaces);
//無論是否開啓WiFi,都會顯示 WiFi 網卡 bsd name;無論是否連接有線,都不顯示有線網卡
NSLog(@"interfaces : %@",interfaces);
/*
interfaces : (
en1
)
*/
if (interfaces.count >0) {
for (NSString *interfaceName in interfaces) {
// 轉換類型,不改變引用計數
// CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)interfaceName);
//
// if (dictRef) {
// NSDictionary *networkInfo = (__bridge NSDictionary *)dictRef;
//
// NSString *SSID = [networkInfo objectForKey:(__bridge NSString *)kCNNetworkInfoKeySSID];
//
// NSString *BSSID = [networkInfoobjectForKey:(__bridge NSString *)kCNNetworkInfoKeyBSSID];
//
// NSData *SSIDDATA = [networkInfoobjectForKey:(__bridge NSData *)kCNNetworkInfoKeySSIDData];
//
// currentWifiInfo = @{@"SSID":SSID,
// @"BSSID":BSSID,
// @"SSIDDATA":SSIDDATA};
}
}
// NSLog(@"currentWifiInfo = %@",currentWifiInfo);
}
CNCopyCurrentNetworkInfo 在 iOS 可用,在 Mac 不可用
當在 Mac 上使用 CNCopyCurrentNetworkInfo 時,會提示:
'CNCopyCurrentNetworkInfo' is unavailable: not available on macOS
前往查看 CNCopyCurrentNetworkInfo 定義時,會發現:
CFDictionaryRef __nullable
CNCopyCurrentNetworkInfo (CFStringRef interfaceName) __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_1);
注意這裏標記了 __MAC_NA