- 导入头文件
#import <ifaddrs.h>
#import <net/if.h>
- 关键代码
+ (BOOL)isWIFIEnable {
NSCountedSet *countedSet = [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) {
NSString *ifa_name = [NSString stringWithUTF8String:interface->ifa_name];
[countedSet addObject:ifa_name];
}
}
}
freeifaddrs(interfaces);
// 网上有人判断的是awdl0
BOOL open = [countedSet countForObject:@"en0"] > 1 ? YES : NO;
YJPrint(@"wifi open status: %@", open ? @"open" : @"unopen");
return open;
}
网上有一种方法判断的是
awdl0
, 但是我测试发现在iOS12/iOS10上面,wifi开启/关闭的状态下awdl0
出现的次数都是2,无法判断.反而en0
在wifi关闭时出现0次,wifi开启时出现2次,可以用来判断wifi开启状态.