为什么要使用Apples Reachability类而不只是尝试进行实际连接?

时间:2012-05-29 14:32:46

标签: iphone ios reachability

Apple提供了一个名为Reachability的类。我几乎使用它但后来发现很多人报告了SO的问题。例如,它会报告误报或多次出现相同的错误通知,使用户多次点击“无网络”警报视图。

为什么我不能简单地尝试在后台获取数据并查看我得到的内容?

NSData *download = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlStr]];

我检查过:当没有互联网时,download只会是零。然后我可以提出一个UIAlertView并抱怨。

另外一些用户说只检查“互联网连接”是愚蠢的,因为可达性仅告知是否连接到网关。网关没有互联网。我的WiFi路由器一直这样做。 iPad有WiFi接收,但没有互联网。

其他人说最好测试一个特定的URL并查看服务器是否存在。

那么为什么还要使用Reachability课呢?为什么不尝试实际的下载,如果没有任何反应,假设有什么问题?

2 个答案:

答案 0 :(得分:2)

如何确定当前有效的网络连接是Wi-Fi还是运营商的网络?

SCNetworkReachability API允许应用程序确定系统当前网络配置的状态以及目标主机的可访问性。 API返回的其中一个标志kSCNetworkReachabilityFlagsIsWWAN将告诉您与目标主机的网络连接是否使用运营商网络......

来自Networking&互联网编码方法

答案 1 :(得分:1)

一个原因是你会检查加载时的可达性,如果没有互联网,甚至不显示按钮来联系互联网。这样可以避免在知道它是否可用之前加载整个下载。

在许多情况下,你是对的。但有时候你只想在实际下载之前检查一下。

另外,如果你在Github上四处看看,有很多可达性课程比Apple提供的课程做得更好。