【问题标题】:How to detect internet connection when connected to wifi but no intenernet: iOS连接到wifi但没有互联网时如何检测互联网连接:iOS
【发布时间】:2016-08-25 07:01:05
【问题描述】:

我只想知道当设备连接到 wifi 但调制解调器中没有互联网连接时,如何在 iOS 中检测互联网连接。

我使用了苹果和 AFNetworking 的可达性,但它们只检查连接并返回连接标志,即使调制解调器中没有可用的互联网。

【问题讨论】:

  • 大概您正在编写一个应用程序并想知道后端是否可以访问?然后只需尝试调用后端并处理失败。
  • @jonrsharpe 我只是想避免在没有连接时点击 web api。
  • 没有连接时您将无法访问 Web API,所以这不是问题。
  • 我正在帮助解决这个问题。您实际上并不关心设备是否具有连接性,您关心的是它是否可以与后端通信。您可能有 Internet 访问权限,但有一些防火墙问题,或者服务器可能已关闭,或者...... - 您仍然需要以相同的方式处理。没有可靠的方法可以在不触摸远程的东西的情况下检查连接,而这些东西也可能是你真正想要触摸的东西。如果您能听取您来这里寻求的建议,那就太好了。
  • @MayankModi,如果你同意,我会写一个你可以接受的答案

标签: ios


【解决方案1】:

我通过可达​​性点击主机找到了解决方案:-

可能对某人有帮助。

-(BOOL)isCheckConnection {
    Reachability *rc = [Reachability reachabilityWithHostName:@"www.google.com"];
    NetworkStatus internetStatus = [rc currentReachabilityStatus];

    if(internetStatus==0)
    {
        //@"NoAccess";
        return NO;
    }
    else if(internetStatus==1)
    {
        //@"ReachableViaWiFi";
        return YES;
    } else if(internetStatus==2)
    {
        //@"ReachableViaWWAN";
        return YES;
    }
    else
    {
        //@"Reachable";
        return YES;
    }
}

【讨论】:

    【解决方案2】:

    为了确保您的设备真正连接到互联网,至少您必须尝试 ping 到 随时运行的服务器(如 stackoverflow.com 或 google.com)。

    当然,正如@jonrsharpe 在问题的 cmets 中所建议的那样,如果为了了解应用程序是否可以访问 Web 服务器而需要进行此检查,那么对您的 Web 服务器执行 ping 或类似操作也是必要的。

    但是,如果您的网络服务器没有响应,您可以相应地显示您的设备已连接到互联网(因此您的调制解调器可以连接到互联网),但对一个可靠工作的网络服务器(如 google)的 ping 会为您提供答案您的应用中的警告警报,通知用户当前您的服务器无法访问。

    转到代码,您可以尝试使用Reachability library检查连接状态,如下所示

    Reachability *reachability = [Reachability reachabilityWithHostName:@"stackoverflow.com"];
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    

    然后检查networkStatus变量:如果0你无法访问互联网,否则YES,所以

    if(networkStatus==0) {
        // no access to internet
    } else {
        // you have access to internet
    }
    

    【讨论】:

    • 我已通过 wifi 连接,但无法访问互联网,它仍显示已连接标志
    • 也许this answer 比我的更轻松 :)
    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2016-09-19
    相关资源
    最近更新 更多