在检查iPAD 3 WiFi + Cellular的可达性(网络可用性)时,我碰到了下面提到的场景中发生的一个奇怪的问题。
`
- (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;
}
`
为了克服这个问题,建议使用一种解决方法(或者我应该说是黑客攻击)。实施如下: 向可靠的主机发送请求&检查它的反应。
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;
}
}
我有几个疑问:
答案 0 :(得分:0)
我不知道您的代码中是否存在错误,但您可以尝试使用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.
}
它适用于我。