不正确的响应 - WWAN 的可达性
Posted
技术标签:
【中文标题】不正确的响应 - WWAN 的可达性【英文标题】:Incorrect Response - Reachability For WWAN 【发布时间】:2013-07-05 18:50:58 【问题描述】:在检查 iPAD 3 WiFi+Cellular 的可达性(网络可用性)时,我遇到了在下面提到的场景中发生的一个奇怪问题。
为了检查网络可用性,我使用了Apple sample code for reachability。 以下代码用于检查 WiFi 或 WWAN 的可用性。`
- (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 网络可用。为了克服这个问题,建议并实施如下解决方法(或者我应该说是 hack): 向可靠的主机发送请求并检查其响应。
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;
我有几个疑问:
-
这听起来可能很另类,但硬件有问题吗
或 ios,即使在没有 SIM 卡的情况下,它也是 ReachableViaWWAN
设备?
对于该问题是否有更好的解决方案(比上述解决方法)?
【问题讨论】:
【参考方案1】:我不知道这是否是您代码中的错误,但您可以尝试使用this 来检查连接。 来自这个question。
为了检查连接,您可以创建如下方法:
-(BOOL)connected
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [reachability currentReachabilityStatus];
return !(networkStatus == NotReachable);
只要你想检查连接就可以了
if (![self connected])
//THERE IS NO WWAN OR WIFI connection
else
// connected.
对我来说很好用。
【讨论】:
以上是关于不正确的响应 - WWAN 的可达性的主要内容,如果未能解决你的问题,请参考以下文章