检测WiFi是否打开
有没有办法检测iPhone / iPad上是否启用了WiFi?
我不感兴趣,看看我是否可以到达互联网,因为我使用的是可达性类。 我只需要知道设备上是否启用了wifi。
感谢任何提示。
也许这是你在找什么:
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 ); } } }
closuresWifi输出:
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 : 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
输出与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
如果你探索ifaddrs结构,你也会发现连接networking的BSSID / SSID。
涉及同一主题有几个问题。 你有没有尝试从苹果这个代码 ?
@property (retain, nonatomic) Reachability* reach; self.reach = [Reachability reachabilityForInternetConnection]; //retain reach [self.reach startNotifier]; NetworkStatus remoteHostStatus = [self.reach currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"init **** Not Reachable ****");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"int **** wifi ****"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"init **** cell ****"); }
在github
上有一个项目。 。 导入到您的项目中,您可以像这样检查连接:
Reachability *reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus status = [reachability currentReachabilityStatus]; if(status == NotReachable) { //No internet } else if (status == ReachableViaWiFi) { //WiFi } else if (status == ReachableViaWWAN) { //3G }
这里的代码。