43

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

4

3 回答 3

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

于 2010-10-17T16:56:35.503 回答
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 数据包可以从您的设备路由出去并且永远不会到达主机服务器,可达性也会提供积极的输出。

于 2013-08-13T16:32:07.727 回答
0

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

于 2021-08-01T10:47:35.717 回答