iOS判断wifi是否开启

  1. 导入头文件
    #import <ifaddrs.h>
    #import <net/if.h>
  2. 关键代码
+ (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开启状态.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容