检测wifi是否已打开

Jor*_*gen 10 iphone ipad ios

有没有办法检测iPhone/iPad上是否启用了wifi?

我不想看看我是否可以上网,因为我使用了Reachability类.我只需要知道设备上是否启用了wifi.

感谢任何提示.

gbu*_*any 6

也许这就是你要找的东西:

DEAD LINK:http://www.enigmaticape.com/blog/determine-wifi-enabled-ios-one-weird-trick

Wayback Machine Archive:https://web.archive.org/web/20161114213529/http: //www.enigmaticape.com/blog/determine-wifi-enabled-ios-one-weird-trick

你想做什么没有框架,但有一个可行的技巧.如果你列出了可用的接口,那么当wifi打开时会出现一些接口(有些只是在你连接到一个接口时出现.你可以列出这样的接口:

struct ifaddrs *interfaces;

if(!getifaddrs(&interfaces)) {
    for( struct ifaddrs *interface = interfaces; interface; interface=interface->ifa_next) {
        BOOL up = (interface->ifa_flags & IFF_UP) == IFF_UP;
        if ( up ) {
            NSLog(
                @"Name : %s, sa_family : %d",
                interface->ifa_name,
                interface->ifa_addr->sa_family
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Wifi关闭输出:

Name : lo0, sa_family : 18
Name : lo0, sa_family : 30
Name : lo0, sa_family : 2
Name : lo0, sa_family : 30
Name : pdp_ip0, sa_family : 18
Name : pdp_ip0, sa_family : 2
Name : en0, sa_family : 18
Name : awdl0, sa_family : 18
Run Code Online (Sandbox Code Playgroud)

wifi输出:

Name : lo0, sa_family : 18
Name : lo0, sa_family : 30
Name : lo0, sa_family : 2
Name : lo0, sa_family : 30
Name : pdp_ip0, sa_family : 18
Name : pdp_ip0, sa_family : 2
Name : en0, sa_family : 18
Name : awdl0, sa_family : 18
Name : awdl0, sa_family : 30
Run Code Online (Sandbox Code Playgroud)

通过wifi连接输出:

Name : lo0, sa_family : 18
Name : lo0, sa_family : 30
Name : lo0, sa_family : 2
Name : lo0, sa_family : 30
Name : pdp_ip0, sa_family : 18
Name : pdp_ip0, sa_family : 2
Name : en0, sa_family : 18
Name : en0, sa_family : 30
Name : en0, sa_family : 2
Name : awdl0, sa_family : 18
Name : awdl0, sa_family : 30
Run Code Online (Sandbox Code Playgroud)

如果您探索ifaddrs结构,您还会找到所连接网络的BSSID/SSID.