首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不正确的响应- WWAN的可达性

不正确的响应- WWAN的可达性
EN

Stack Overflow用户
提问于 2013-07-05 18:50:58
回答 1查看 2.1K关注 0票数 1

在检查iPAD 3 WiFi+Cellular的可达性(网络可用性)时,我遇到了一个在下面提到的场景中发生的奇怪问题。

  • 为了检查网络可用性,我使用了苹果可达性示例代码
  • 实现了以下代码以检查WiFi或WWAN的可用性。

`

代码语言:javascript
复制
- (BOOL)networkCheck
 {
    Reachability *wifiReach = [Reachability reachabilityForInternetConnection];
    NetworkStatus netStatus = [wifiReach currentReachabilityStatus];

    switch (netStatus)
    {
        case NotReachable:
        {
            NSLog(@"%@",@"NETWORKCHECK: Not Connected");    
            return false;
            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"%@",@"NETWORKCHECK: Connected Via WiFi");       
            return true;
            break;
        } 
        case ReachableViaWWAN:
        {
            NSLog(@"%@",@"NETWORKCHECK: Connected Via WWAN");
            return true;
            break;
        }
    }
    return false;
 }

`

  • 在iPAD中没有SIM的情况下&也有无-WiFi连接时,上述方法执行ReachableViaWWAN情况,这似乎是完全不正确的,因为没有SIM或任何其他WWAN网络可用。

为了克服这个问题,建议了一种解决方法(或者应该说是黑客),具体实现如下:向可靠的主机发送请求并检查其响应。

代码语言:javascript
复制
case ReachableViaWWAN:
    {
        NSLog(@"%@",@"NETWORKCHECK: Connected Via WWAN");
        NSData *responseData = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"www.google.com"]] returningResponse:nil error:nil];
        if (responseData != nil)
        {
            return true;
            break;
        }
        else
        {
            return false;
            break;
        }

    }

我有几个问题:

  1. 这可能听起来有些离奇,但硬件或iOS的问题是,即使设备中没有SIM,它也是ReachableViaWWAN吗?
  2. 对于这个问题是否有更好的解决方案(比上面提到的解决办法更好)?
EN

回答 1

Stack Overflow用户

发布于 2013-07-06 00:25:18

我不知道这是否是代码中的一个bug,但是您可以尝试使用来检查连接。从这个问题

为了检查连接性,您可以创建如下方法:

代码语言:javascript
复制
 -(BOOL)connected
  {
     Reachability *reachability = [Reachability reachabilityForInternetConnection];
     NetworkStatus networkStatus = [reachability currentReachabilityStatus];
     return !(networkStatus == NotReachable);
 }

只要你想要检查连接

代码语言:javascript
复制
if (![self connected]) {
//THERE IS NO WWAN OR WIFI connection
}else{
// connected. 
}

对我来说很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17495221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档