在拨打网络服务互联网之前检查打开或关闭

问题描述:

想要检查是互联网可用或不可用前调用任何网络服务器在拨打网络服务互联网之前检查打开或关闭

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

在ViewController.h

-(BOOL)connected; 

和ViewController.m其实现。

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

之前调用Web服务器制造condtion

if([self connection] == true){ 

// Do call web server. 
} 

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

WIFI运行在这两种情况下,应用程序打开或关闭与MACBOOKPRO“模拟器”或设备。它总是返回真实的状态。

请让我知道,我应该做什么才能正确地做出可行性工作。

我使用的是Xcode 6.0.1 IOS SDK 8.0。

@ALL 提前致谢。

+1

请选中该链接http://*.com/questions/8812459 /最简单的方式来检测互联网连接上的IOS – NANNAV 2014-10-04 08:12:13

+0

其工作设备不适用于模拟器。 IOS 8.0.1中修正的IOS 8.0问题的可达性存在小问题 – KkMIW 2014-10-04 09:34:22

为什么要麻烦?如果没有网络连接,你会从你的尝试中得到一个完美的错误。可达性对于了解连接何时返回以及是否有网络作业排队很有用,但在每次网络调用之前检查无效。

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

+0

是的你是对的。但是如果没有网络连接,我会收到很好的错误。在这里,不必要的是我打电话给服务器,我觉得这不是一个有效的。 - (void)连接:(NSURLConnection *)连接didFailWithError:(NSError *)错误{@@“错误消息%@”,错误); ] } – KkMIW 2014-10-04 07:22:27

+0

您认为可达性如何获取其信息?关于可达性的 – jrturton 2014-10-04 07:28:07

+0

获取其信息。它唯一的网络状态是打开或关闭。与请求服务器数据无关。 – KkMIW 2014-10-04 07:36:26

如果您使用AFNetworking库,那么它会内部检查网络连接并提供正确的网络错误警报。 REF:​​

我在iOS 8上做了一个测试,上面的代码在设备上工作。但是在模拟器上,无论是打开还是关闭,总是返回true。在将可达性改为:

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

它在模拟器上工作。

原代码适用于模拟器的iOS 7,因此可能为iOS 8

+0

我在这里有一个小问题。无需拨打www.google.com reachabilityWithHostName即可获取网络状态。开或关 – KkMIW 2014-10-04 07:40:01

+0

我不这么认为。也许将来你可以。 – gabbler 2014-10-04 07:51:47

试试下面的代码中的错误:

if (![self connected]) { 

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