连接到wifi但没有intenernet时如何检测互联网连接:iOS

时间:2016-08-25 07:01:06

标签: ios

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

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

2 个答案:

答案 0 :(得分:1)

我通过Reachability击中主机找到了解决方案: -

可能对某人有帮助。

-(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;
    }
}

答案 1 :(得分:1)

为了确保您的设备真正连接到互联网,至少您必须尝试ping up& running at anytime 服务器(例如stackoverflow.com或google.com)

当然,正如问题评论中@jonrsharpe所建议的那样,如果需要进行此项检查以了解应用是否可以访问网络服务器,那么还需要对您的网络服务器执行ping操作等。

但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
}