我在IOS应用中使用可达性来确定连接。
在这篇文章之后wifi on iphone simulator
如果关闭了wifi,则无法使用模拟器的互联网连接,但手机仍连接到Wifi,因此连接没有更改。一切都很好并且可以理解,当然我可以在设备本身上进行测试。
但是,我正在尝试处理用户连接到wifi但wifi没有互联网连接的错误,如下面的屏幕截图所示。
我通过以下方式使用可达性:
#pragma mark - ()
- (void)monitorReachability {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:ReachabilityChangedNotification object:nil];
self.hostReach = [Reachability reachabilityWithHostname: @"api.parse.com"];
[self.hostReach startNotifier];
self.internetReach = [Reachability reachabilityForInternetConnection];
[self.internetReach startNotifier];
self.wifiReach = [Reachability reachabilityForLocalWiFi];
[self.wifiReach startNotifier];
}
//每当状态更改时,由可达性调用。
-(void)reachabilityChanged:(NSNotification *)note {
可达到性* curReach =(可达到性*)[note object];
NSParameterAssert([curReach isKindOfClass:[Reachability class]]);
NSLog(@“可到达性已更改:%@”,curReach);
networkStatus = [curReach currentReachabilityStatus];
}
我正在使用来自tonymillion的github的ARC可达性:https://github.com/tonymillion/Reachability
有谁知道我该如何处理这种连接情况并带来更好的错误?
最佳答案
在appdelegate中创建以下方法以在任何类上使用它。
-(BOOL)isHostAvailable
{
//return NO; // force for offline testing
Reachability *hostReach = [Reachability reachabilityForInternetConnection];
NetworkStatus netStatus = [hostReach currentReachabilityStatus];
return !(netStatus == NotReachable);
}