检查互联网连接或无线连接与reachabilitySwift

问题描述:

我正在建设一个iOS应用程序,在某些时候我需要检查应用程序的互联网访问,所以我使用ReachabilitySwift库。检查互联网连接或无线连接与reachabilitySwift

经过一些测试后,在我看来,该库只会检查设备是否连接了wifi并且没有从我的路由器提供实际的Internet连接。

可以说我断开我的路由器从互联网,如果我的iOS设备通过WiFi连接到路由器,可达性告诉我,我们有互联网连接,在真正的我的路由器没有互联网。

我试图用一个特定的主机是否可达,但仍然有同样的结果

var reachability = Reachability.init(hostname: "google.com"); 

应该给予反馈当WiFi连接丢失或实际的网络连接丢失的可达性图书馆吗?

预先感谢您。

+0

检查此网址https://*.com/questions/30743408/check-for-internet-connection-with-swift –

+0

感谢@Lalitkumar,我发布我的问题之前已经遍布了*,所有这些问题不' t解决我自己的,我试图确定互联网访问,而不是WiFi或3/4G连接。非常感谢:) – TheFuquan

+0

[如何检查iOS或OSX上的活动Internet连接?](https:// *。问题/ 1083701 /如何检查为主动互联网连接上的IOS或OSX) –

我在那里做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) 
       } 
      }) 
     } 
    } 
+0

我认为这是我想要的路线 – TheFuquan

Reachablility.h你可以找到一个声明:

typedef enum : NSInteger { 
    NotReachable = 0, 
    ReachableViaWiFi, 
    ReachableViaWWAN 
} NetworkStatus; 

然后,里面Reachability类,你可以找到方法,它返回类型:

- (NetworkStatus)currentReachabilityStatus; 

因此,使用它。在您的SWIFT代码,你可以做这样的:

if reachability.currentReachabilityStatus == .ReachableViaWiFi { 
    // Do things... 
} 
+0

谢谢,但就像我一直在说,我已经做了所有这些,我的问题是确认实验室只检查是否有wifi连接,而不是实际检查是否有实际的互联网访问通过WiFi连接。 – TheFuquan

+0

如果没有互联网接入,你会得到'NotReachable',或者我错了? – kelin

+0

这正是我的问题,当我断开我的路由器并将我的ios设备连接到我的路由器时,我一直在获取ReachableViaWiFi,就好像该库仅检查设备是否通过WiFi连接到路由器而不检查Internet连接。 – TheFuquan

在WWDC做,苹果已经说了很多很多次,如果你需要简单地看,如果Wi-Fi或达 - 可到达。如果你需要看看你是否可以连接到 - 然后不使用可达;而只需连接并处理错误。

可达并不实际检查它是否可以连接到该基于IP的资源,并且如果您要返回结果。要做到这一点的唯一方法就是实际尝试。

在Apple的WWDC网站上查找与Quinn的联网会话,以查看相同的建议。

+0

感谢你实际上解决原来的问题:) 你可以请参考谈话的视频,甚至一些官方文件? – TheFuquan