在iOS框架中,如何检查用户是否启用了Wifi无线电?请注意,我对通过Wifi的可达性不感兴趣,而是用户关闭了设备.谢谢.
基于:http://www.enigmaticape.com/blog/determine-wifi-enabled-ios-one-weird-trick
使用基于C的ifaddress结构可以确定Wifi状态为ON/OFF:
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;
}
Run Code Online (Sandbox Code Playgroud)
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")
}
Run Code Online (Sandbox Code Playgroud)
正如@magma的评论中提到的,您可能必须使用Reachability源代码.到目前为止,根据我的经验和其他人一直在谈论的内容,没有布尔值可以告诉您用户是否在"设置"中关闭了Wi-Fi.通过检查设备是否可以访问互联网,您只需推断并推断(假设)用户已关闭Wi-Fi.
归档时间: |
|
查看次数: |
7606 次 |
最近记录: |