检查互联网连接或无线连接与reachabilitySwift
我正在建设一个iOS应用程序,在某些时候我需要检查应用程序的互联网访问,所以我使用ReachabilitySwift库。检查互联网连接或无线连接与reachabilitySwift
经过一些测试后,在我看来,该库只会检查设备是否连接了wifi并且没有从我的路由器提供实际的Internet连接。
可以说我断开我的路由器从互联网,如果我的iOS设备通过WiFi连接到路由器,可达性告诉我,我们有互联网连接,在真正的我的路由器没有互联网。
我试图用一个特定的主机是否可达,但仍然有同样的结果
var reachability = Reachability.init(hostname: "google.com");
应该给予反馈当WiFi连接丢失或实际的网络连接丢失的可达性图书馆吗?
预先感谢您。
我在那里做web服务我有过类似的问题与可达性要求与VPN保护的网络。
var reachability = Reachability.init(hostname: "google.com");
没有为我工作,因为它有WiFi连接时返回true。
我用Alamofire
响应时,虚拟呼叫服务器
func networkIsAvailable(available: (Bool, String?) -> Void) {
var message : String = ""
DispatchQueue.main.async {
HUD.show(.progress)
Alamofire.request(Constants.baseUrl, method: .get, parameters: ["foo": "bar"])
.responseJSON(completionHandler: { (response) in
let error = response.result.error as? NSError
if error?.localizedDescription == networkAlert {
message = networkAlert
available(false, message)
} else if error?.code == cannotConnectServerCode || error?.localizedDescription == cannotConnectServerMessage {
message = cannotConnectServerMessage
available(false, anotherNetworkAlert)
} else {
available(true, nil)
}
})
}
}
我认为这是我想要的路线 – TheFuquan
在Reachablility.h你可以找到一个声明:
typedef enum : NSInteger {
NotReachable = 0,
ReachableViaWiFi,
ReachableViaWWAN
} NetworkStatus;
然后,里面Reachability
类,你可以找到方法,它返回类型:
- (NetworkStatus)currentReachabilityStatus;
因此,使用它。在您的SWIFT代码,你可以做这样的:
if reachability.currentReachabilityStatus == .ReachableViaWiFi {
// Do things...
}
在WWDC做,苹果已经说了很多很多次,如果你需要简单地看,如果Wi-Fi或达 - 可到达。如果你需要看看你是否可以连接到 - 然后不使用可达;而只需连接并处理错误。
可达并不实际检查它是否可以连接到该基于IP的资源,并且如果您要返回结果。要做到这一点的唯一方法就是实际尝试。
在Apple的WWDC网站上查找与Quinn的联网会话,以查看相同的建议。
感谢你实际上解决原来的问题:) 你可以请参考谈话的视频,甚至一些官方文件? – TheFuquan
检查此网址https://*.com/questions/30743408/check-for-internet-connection-with-swift –
感谢@Lalitkumar,我发布我的问题之前已经遍布了*,所有这些问题不' t解决我自己的,我试图确定互联网访问,而不是WiFi或3/4G连接。非常感谢:) – TheFuquan
[如何检查iOS或OSX上的活动Internet连接?](https:// *。问题/ 1083701 /如何检查为主动互联网连接上的IOS或OSX) –