是否可以在 iOS 上以编程方式查询 WiFi 状态(启用/禁用)?当启用 WiFi 且设备未连接到任何网络时,查询应返回 true。
编辑: 我知道 Reachability
类提供的功能,据我所知,它无法识别已启用但未连接的 WIFI 状态。 IE。以下代码将返回 NetworkStatus
NotReachable
,这不是我需要的。
Reachability* r = [Reachability reachabilityForLocalWiFi];
NetworkStatus ns = [r currentReachabilityStatus];
最佳答案
免责声明:以下解决方案不可靠并且不能保证它会通过 AppStore。
到目前为止,我能找到的唯一可行的解决方案是使用 getifaddrs
函数请求和评估可用接口(interface)列表。如果 WiFi 禁用/启用/连接,列表看起来会有所不同:
NSCountedSet * cset = [NSCountedSet new];
struct ifaddrs *interfaces;
if( ! getifaddrs(&interfaces) ) {
for( struct ifaddrs *interface = interfaces; interface; interface = interface->ifa_next) {
if ( (interface->ifa_flags & IFF_UP) == IFF_UP ) {
[cset addObject:[NSString stringWithUTF8String:interface->ifa_name]];
}
}
}
freeifaddrs(interfaces);
return [cset countForObject:@"awdl0"] > 1 ? WIFI_ON : WIFI_OFF;
关于iOS:如何查询WiFi状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206957/