iOS:如何查询WiFi状态

是否有可能以编程方式查询iOS上的WiFi状态(启用/禁用)? 当启用WiFi并且设备没有连接到任何networking时,查询应该返回true。

编辑:我意识到由Reachability类提供的function,据我所知,它不承认启用,但没有连接状态的WIFI。 即下面的代码将返回NetworkStatus NotReachable ,这不是我所需要的。

 Reachability* r = [Reachability reachabilityForLocalWiFi]; NetworkStatus ns = [r currentReachabilityStatus]; 

免责声明:以下解决scheme不健壮,不保证它会通过AppStore 。 详细描述以及Enigmatic Ape的完整工作代码示例可以在这里find。

目前为止唯一可行的解​​决scheme是使用getifaddrs函数请求和评估可用接口列表。 在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; 

你可以使用Reachability来检查这个。 导入文件,然后你可以这样做:

 Reachability *networkReachability = [Reachability reachabilityWithHostName:@"http://google.com]; NetworkStatus networkStatus = [networkReachability currentReachabilityStatus]; if (networkStatus == ReachableViaWiFi) { //wifi } 

你可以使用苹果在这里提供的Reachability类,然后检查这个:

[Reachability reachabilityForLocalWiFi];