在检查一台iPad 3的WiFi +蜂窝的可达性(网络可用性),我跑进对面,在下文提到的情况发生了一个奇怪的问题。
- 要检查网络可用性我用苹果的示例代码可达性 。
- 下面的代码执行,以检查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网络。
为了克服这个问题的解决方法(或者我应该说一个黑客)建议和实施,详情如下:发送请求到可靠的主机及检查其响应。
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它的ReachableViaWWAN即使在没有SIM卡出现在设备?
- 有没有更好的解决办法(除了上面提到的解决方法)的问题?