我正在使用Reachability类,Apple提供并面临一个奇怪的事情。 应用程序每次启动时都会检查连接,如果它处于活动状态,则更新一些数据。 当我打开飞行模式并在重新启动应用程序之后,将调用 didBecomeActive ,可达性返回错误状态(reachableViaWiFi)。如果再重复一次,则返回正确的状态。
另外我注意到,如果你转动飞行模式,等待几秒钟,然后重新启动应用程序,可达性返回正确的状态。
这种行为有什么解释吗?
答案 0 :(得分:0)
检查连接时,您需要更严格。在收到可达性更改通知时添加更多条件。
检查以下条件:
- (void)reachabilityDidChange:(NSNotification *)notification {
// Reachbility for internet
Reachability *reachability = (Reachability *)[notification object];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];
switch (internetStatus) {
case NotReachable:
{
NSLog(@"The internet is down.");
break;
}
case ReachableViaWiFi:
{
NSLog(@"The internet is working via WIFI.");
break;
}
case ReachableViaWWAN:
{
NSLog(@"The internet is working via WWAN.");
break;
}
}
// Reachbility for host
Reachability *hostReachability = [Reachability reachabilityWithHostName:@"www.apple.com"];
NetworkStatus hostStatus = [hostReachability currentReachabilityStatus];
switch (hostStatus) {
case NotReachable:
{
NSLog(@"A gateway to the host server is down.");
break;
}
case ReachableViaWiFi:
{
NSLog(@"A gateway to the host server is working via WIFI.");
break;
}
case ReachableViaWWAN:
{
NSLog(@"A gateway to the host server is working via WWAN.");
break;
}
}
}