适用于iOS的可达性指南

时间:2010-09-24 21:01:54

标签: ios iphone reachability

有没有人找到在iOS上实现Reachability的中途指南?

3 个答案:

答案 0 :(得分:95)

我已经像这样实现了可达性。 下载https://developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html并将Reachability.h和.m添加到您的项目中。将SystemConfiguration框架添加到项目中。 #import“Reachability.h”您要使用它。使用此代码。

-(BOOL)reachable {
    Reachability *r = [Reachability reachabilityWithHostName:@"enbr.co.cc"];
    NetworkStatus internetStatus = [r currentReachabilityStatus];
    if(internetStatus == NotReachable) {
        return NO;
    }
    return YES;
}

如果您想检查可达性......

if ([self reachable]) {
    NSLog(@"Reachable");
}
else {
    NSLog(@"Not Reachable");
}

这是我制作的示例项目。 http://dl.dropbox.com/u/3656129/ReachabilityExample.zip

答案 1 :(得分:2)

我认为检查主机地址可用性的最佳方法是检查NSURL请求的结果。

NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:reqURL]];
NSURLResponse *resp = nil;
NSError *error = nil;
NSData *response = [NSURLConnection sendSynchronousRequest: theRequest returningResponse: &resp error: &error];
NSString *responseString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

使用此代码,如果您的设备无法访问提供的URL,它会向错误变量提供一些输出,如果它可以访问URL请求,则错误为Nil。

即使您的URL数据包可以从您的设备路由出来并且永远不会到达主机服务器,可达性也会产生正输出。

答案 2 :(得分:0)

这个问题似乎只有过时的答案。从 iOS 12 开始,我们有 NWPathMonitor,所以您至少也应该研究一下。