我正在尝试获取MacOSX10.14上当前WiFi连接的BSSID,但获取的是nil。
返回nil的代码如下:
NSString *bssid = [[[CWWiFiClient sharedWiFiClient] interface] bssid];虽然SSID返回有效值:
NSString *ssid = [[[CWWiFiClient sharedWiFiClient] interface] ssid];其他解决方案适用于iOS,例如使用这里提出的CaptiveNetworks框架How do I get the current access point's MAC address/BSSID?,但一些方法,如CNCopyCurrentNetworkInfo -不支持MacOS。
发布于 2019-07-02 19:40:45
这不是最好的解决方案,但至少它在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();
}
}发布于 2019-05-20 21:54:10
我对OSX的两点看法是:
让client = CWWiFiClient.shared()保护let接口: CWInterface = client.interfaces()否则{ return nil } //在iOS上我们得到了第一个接口,这里我们应该返回多个接口。var ssid:字符串?var bssid:字符串?var interfaceNameString:字符串?对于接口中的接口{ ssid = interface.ssid() bssid = interface.bssid() interfaceNameString = interface.interfaceName ...
}
激活时要小心:

如果在OSX的App Store上,则在激活沙盒时。
https://stackoverflow.com/questions/52665939
复制相似问题