在致电任何 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 感谢提前。
答案 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.
}