在拨打网络服务互联网之前检查打开或关闭
问题描述:
想要检查是互联网可用或不可用前调用任何网络服务器。在拨打网络服务互联网之前检查打开或关闭
我用苹果提供的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 提前致谢。
答
为什么要麻烦?如果没有网络连接,你会从你的尝试中得到一个完美的错误。可达性对于了解连接何时返回以及是否有网络作业排队很有用,但在每次网络调用之前检查无效。
无论如何,您需要错误处理代码,因为缺少的连接只是请求可能返回错误的几个原因之一。在这种情况下,可达性是增加额外的代码没有好处,这是我见过的大多数用途。
答
如果您使用AFNetworking库,那么它会内部检查网络连接并提供正确的网络错误警报。 REF:
答
我在iOS 8上做了一个测试,上面的代码在设备上工作。但是在模拟器上,无论是打开还是关闭,总是返回true。在将可达性改为:
Reachability *reachability = [Reachability reachabilityWithHostName:@"www.google.com"];
它在模拟器上工作。
原代码适用于模拟器的iOS 7,因此可能为iOS 8
答
试试下面的代码中的错误:
if (![self connected]) {
// Alert message print. // Please check internet connection.
} else {
// Do call web server.
}
请选中该链接http://stackoverflow.com/questions/8812459 /最简单的方式来检测互联网连接上的IOS – NANNAV 2014-10-04 08:12:13
其工作设备不适用于模拟器。 IOS 8.0.1中修正的IOS 8.0问题的可达性存在小问题 – KkMIW 2014-10-04 09:34:22