如何检查iOS Swift 2中的WiFi是否打开或closures?

我想检查wifi是否closures,然后显示提醒用户检查他/她的连接。

我发现这样的代码,但它会检查是否有互联网连接,而不是检查无线networking是否开启或closures:

func isConnectionAvailble()->Bool{ var rechability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, "www.apple.com").takeRetainedValue() var flags : SCNetworkReachabilityFlags = 0 if SCNetworkReachabilityGetFlags(rechability, &flags) == 0 { return false } let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) != 0 let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0 return (isReachable && !needsConnection) } 

你不能。

有了可达性,你可以区分三件事情:a。 你有一个WiFi连接,你可能会或可能没有移动数据连接。 湾 你有一个移动数据连接,但没有WiFi连接。 C。 您既没有WiFi也没有移动数据连接。

您无法检查WiFi是否closures,或者WiFi是否closures,但附近没有WiFinetworking,或者飞行模式是否已打开。

对于移动数据,您可以使用电话类来查找您的设备是否支持移动数据连接(iPhone和不支持iPad以及插入SIM卡),并且可以检测您的应用程序的偏好设置中是否禁用了移动数据。

你可以看看官方的苹果示例Reachability: https : //developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html

 var netStatus = reachability.currentReachabilityStatus() var connectionRequired = reachability.connectionRequired() var statusString = "" switch netStatus { case NotReachable: break case ReachableViaWWAN: //DATA break case ReachableViaWiFi: //WIFI break 

}

你可以使用这个方法来检查:

首先你导入这个框架:

 import SystemConfiguration.CaptiveNetwork func isWifiEnabled() -> Bool { var hasWiFiNetwork: Bool = false let interfaces: NSArray = CFBridgingRetain(CNCopySupportedInterfaces()) as! NSArray for interface in interfaces { // let networkInfo = (CFBridgingRetain(CNCopyCurrentNetworkInfo(((interface) as! CFString))) as! NSDictionary) let networkInfo: [AnyHashable: Any]? = CFBridgingRetain(CNCopyCurrentNetworkInfo(((interface) as! CFString))) as? [AnyHashable : Any] if (networkInfo != nil) { hasWiFiNetwork = true break } } return hasWiFiNetwork; }