为什么要使用苹果的Reachability类而不是直接尝试建立实际连接?

4
苹果提供了一个名为Reachability的类。我差点使用它,但后来发现很多人在SO上报告问题。例如,它会报告错误的正面或多次弹出相同的错误通知,使用户多次点击“无互联网”警报视图。
我为什么不能简单地尝试在后台获取数据并查看结果呢?
NSData *download = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlStr]];

经过检查,当没有网络时,“download”将为零。然后我可以弹出一个UIAlertView并进行投诉。

还有一些用户认为仅检查“互联网连接”是愚蠢的,因为Reachability只会告诉是否连接到网关。网关可能没有互联网,我的WiFi路由器经常这样做。iPad具有WiFi接收功能,但没有互联网。

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

那么为什么要使用Reachability类呢?为什么不尝试实际下载,如果什么都没有发生,就认为出了问题?

2个回答

2

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

SCNetworkReachability API允许应用程序确定系统当前网络配置的状态和目标主机的可达性。API返回的标志之一kSCNetworkReachabilityFlagsIsWWAN,将告诉您是否使用运营商网络连接到目标主机...

来自网络和互联网编码的实用指南


1

一个原因是在加载时检查可达性,如果没有互联网,则不显示到互联网的按钮。这将使您免于在了解其是否可用之前加载整个下载。

在许多情况下,您是正确的。但有时您只想在实际下载任何内容之前进行长时间检查。

此外,如果您在Github上四处寻找,会发现有很多可达性类比Apple提供的更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接