在致电webservice互联网开启或关闭之前检查

时间:2014-10-04 07:07:44

标签: ios objective-c iphone ios8 reachability

在致电任何 WEB-SERVER 之前,想检查互联网是否可用。

我使用苹果公司提供的Reachiablity来检查互联网是否开启。 我将这两个文件添加到我的项目中。 Reachability.h和Reachability.m

在ViewController.h中

 -(BOOL)connected;

和ViewController.m实现。

   -(BOOL)connected{
        Reachability *reachability = [Reachability reachabilityForInternetConnection];
        NetworkStatus networkStatus = [reachability currentReachabilityStatus];
        return networkStatus != NotReachable;
    }

在致电网络服务器制作条件之前

if([self connection] == true){

// Do call web server.
}

else {
// Alert message print. // Please check internet connection.
}

在两种情况下使用MACBOOKPRO"模拟器" WIFI ON或OFF 运行应用程序时或在设备上。它总是会回归真实状态。

请让我知道,我需要做些什么才能使重新开展工作。

我正在使用Xcode 6.0.1 IOS SDK 8.0。

@ALL 感谢提前。

4 个答案:

答案 0 :(得分:1)

为什么要这么麻烦?如果没有网络连接,您将从尝试中得到一个非常好的错误。可达性对于了解连接何时返回,如果您排队了网络作业很有用,但在每次网络呼叫之前检查是没有意义的。

无论如何,您需要错误处理代码,因为缺少连接只是请求可能返回错误的几个原因之一。在这种情况下,可达性是添加额外的代码,没有任何好处,这对我所见过的大多数用途都是如此。

答案 1 :(得分:0)

如果您使用AFNetworking库,那么它会内部检查网络连接并提供正确的网络错误警报。 参考:http://afnetworking.com

答案 2 :(得分:0)

我在iOS 8上做过测试,上面的代码适用于设备。但是在模拟器上,无论wifi打开还是关闭,它总是返回true。将可达性更改为:

Reachability *reachability = [Reachability reachabilityWithHostName:@"www.google.com"];

它适用于模拟器。

原始代码适用于iOS 7的模拟器。因此可能是iOS 8的错误。

答案 3 :(得分:0)

尝试以下代码:

if (![self connected]) {

   // Alert message print. // Please check internet connection.
 } else {
  // Do call web server.
}