Objective c can';无法在MacOS上获取实际的bssid值

Objective c can';无法在MacOS上获取实际的bssid值,objective-c,macos,Objective C,Macos,我试图在Mac OS X 10.14上获取当前WiFi连接的BSSID,但获取nil 返回nil的代码如下: NSString *bssid = [[[CWWiFiClient sharedWiFiClient] interface] bssid]; 尽管SSID返回有效值: NSString *ssid = [[[CWWiFiClient sharedWiFiClient] interface] ssid]; 其他解决方案适用于iOS,例如使用此处提出的CaptiveNetworks框架,

我试图在Mac OS X 10.14上获取当前WiFi连接的BSSID,但获取
nil

返回
nil
的代码如下:

NSString *bssid = [[[CWWiFiClient sharedWiFiClient] interface] bssid];
尽管SSID返回有效值:

NSString *ssid = [[[CWWiFiClient sharedWiFiClient] interface] ssid];

其他解决方案适用于iOS,例如使用此处提出的CaptiveNetworks框架,但有些方法,如
CNCopyCurrentNetworkInfo
,不支持MacOS。

我的两分钱用于OSX,以防:

  • 使用无线局域网
  • 添加NetworkExtensions
  • 电话:

       let client = CWWiFiClient.shared()
        guard let interfaces : [CWInterface] = client.interfaces() else{
            return nil
        }
    
        // on iOS we got the first, here we should return multiple interfaces.
        var ssid: String?
        var bssid: String?
        var interfaceNameString: String?
    
        for interface in interfaces{
    
            ssid = interface.ssid()
            bssid = interface.bssid()
            interfaceNameString = interface.interfaceName
         ...
    
}

小心激活:


如果在OSX应用商店中,激活沙箱时。

这不是最好的解决方案,但至少在Qt中有效:

QString getBssidOnMac() {
    QStringList arguments;
    arguments << "-I";
    QProcess process;
    process.start("/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport", arguments);
    process.waitForFinished();
    QString outp = process.readAllStandardOutput();
    QRegExp re_bssid(".*(BSSID\\:\\s([0-9a-fA-F]{1,2}(\\:[0-9a-fA-F]{1,2}){5})).*");
    if (re_bssid.indexIn(outp) !=-1) {
        return re_bssid.cap(2);
    }
    else {
        return QString();
    }
}
QString getBssidOnMac(){
QStringList参数;

参数可能重复否,@CinderBiscuits,这不是重复,因为我的问题是关于MacOS而不是iOS。您是否尝试了另一个问题的解决方案?您对MacOS和iOS使用相同的API。我建议的解决方案的问题是,
CNCopyCurrentNetworkInfo
仅在iOS上受支持。我让BSSID执行
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport-I
在单独的过程和解析结果中,但它看起来不是一个好的解决方案。@atlascoder您找到解决方案了吗?我们需要导入哪些文件和框架在objective c项目中运行此代码好的,此代码是针对我的Qt的这不是为了包含到Xcode项目中,而是为了替换它。我建议您找到一种从ObjC运行终端命令的方法——它将以同样的方式工作