iOS:如何查询WiFi状态

标签 ios objective-c wifi

是否可以在 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/

相关文章:

ios - 在类别中使用关联引用

android.net.wifi.STATE_CHANGE : not triggered on Wifi disconnect

android - 从代码开始/停止内置 Wi-Fi/USB 网络共享?

ios - UICollectionView 中只有一个粘性 header

ios - 标题中的 Swift 可扩展搜索栏?

ios - 具有混合类型(字符串和 NSMutableArray)的 swift 4 post 通知 userInfo

objective-c - Objective-C 中的 "self"

ios - UITableViewController 中的 UISearchController - 行不可选择且 TableView 显示为灰色

ios - 从 UIPickerView 中删除未选择的项目

android - 无需root手机即可设置WiFi代理