4

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

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

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

我查了一下:当没有互联网时,download它将是零。然后我可以调出 UIAlertView 并抱怨。

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

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

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

4

2 回答 2

2

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

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

从网络和互联网编码指南

于 2012-05-29T14:45:55.513 回答
1

一个原因是您会在加载时检查可访问性,如果没有互联网,甚至不显示连接互联网的按钮。这将使您不必在知道它是否可用之前加载整个下载。

在很多情况下,你是对的。但有时您只想在实际下载任何内容之前进行检查。

此外,如果你在 Github 上环顾四周,有很多可达性类比 Apple 提供的类做得更好。

于 2012-05-29T14:41:27.023 回答