在 iOS 框架中,如何检查用户是否启用了 Wifi radio ?请注意,我对通过 Wifi 的可达性不感兴趣,而是对设备是否被用户关闭感兴趣。谢谢。
最佳答案
基于:http://www.enigmaticape.com/blog/determine-wifi-enabled-ios-one-weird-trick
可以使用基于 C 的 ifaddress 结构确定 Wifi 状态是开/关:
ifaddrs.h 和
网络/if.h
[代码来源:未知。]
- (BOOL) isWiFiEnabled {
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]];
}
}
}
return [cset countForObject:@"awdl0"] > 1 ? YES : NO;
}
Swift 3 版本(需要桥接头与 #include <ifaddrs.h>
):
func isWifiEnabled() -> Bool {
var addresses = [String]()
var ifaddr : UnsafeMutablePointer<ifaddrs>?
guard getifaddrs(&ifaddr) == 0 else { return false }
guard let firstAddr = ifaddr else { return false }
for ptr in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) {
addresses.append(String(cString: ptr.pointee.ifa_name))
}
freeifaddrs(ifaddr)
return addresses.contains("awdl0")
}
关于iPhone Wifi 打开还是关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906171/