macOS 开发 - 使用 CNCopySupportedInterfaces 获取 WiFi ssid

版权声明:本文为博主原创文章,转载请附上本文链接地址。from : https://blog.csdn.net/lovechris00 https://blog.csdn.net/lovechris00/article/details/84870160


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


猜你喜欢

转载自blog.csdn.net/lovechris00/article/details/84870160