2

我在我的 IOS 应用程序中使用可达性来确定连接。

继这篇文章wifi on iphone 模拟器

如果 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 { Reachability *curReach = (Reachability *)[note object]; NSParameterAssert([curReach isKindOfClass: [Reachability class]]); NSLog(@"可达性改变:%@", curReach); networkStatus = [curReach currentReachabilityStatus];

}

我在这里使用来自 tonymillion 的 github 的 Reachability for ARC:https ://github.com/tonymillion/Reachability

有谁知道我可以如何处理这种连接情况并出现更好的错误? 在此处输入图像描述

4

1 回答 1

2

在 appdelegate 中创建以下方法以在任何类上使用它。

-(BOOL)isHostAvailable
{
    //return NO; // force for offline testing
    Reachability *hostReach = [Reachability reachabilityForInternetConnection];
    NetworkStatus netStatus = [hostReach currentReachabilityStatus];
    return !(netStatus == NotReachable);
}
于 2012-09-07T09:17:41.923 回答