【问题标题】:What is the real necessity of Apple's Reachability framework?Apple 的 Reachability 框架的真正必要性是什么?
【发布时间】:2012-08-20 00:54:57
【问题描述】:

我已经阅读了可达性框架,但仍然很困惑为什么主机可达性的定义是“当数据包......可以离开本地设备时”。

如果可达性返回“是”,那么我似乎仍然需要尝试建立一个套接字连接,直到真正连接为止,我并不知道我的主机已经启动。为什么 Reachability 不使用 Ping 来更好地了解主机是否实际启动?这个框架首先需要什么?

我的猜测是这两个,但如果有人知道使用可达性框架的任何其他原因,请告诉我。

1) 可达性提供回调,当互联网恢复时提供即时通知。发生这种情况时,可以立即尝试套接字连接。然而,在 99% 的应用程序中,每隔几秒尝试一次套接字连接似乎是可以接受的,或者在最坏的情况下,只是在用户执行特定操作时尝试建立连接。诚然,这不是一个理想的解决方案,但我不明白为什么出于这个原因,Reachability 框架真的很有必要。

2) 即使在与服务器建立套接字连接的情况下,Reachability 也会提供有关网络是否为 G3/WiFi 的重要信息。我认为这是唯一一次真正必要的可达性,因为它允许根据网络类型优化行为。

【问题讨论】:

  • 好吧 1) 它可以让大多数不太关注套接字连接(主要是 WebView)的开发人员优雅地处理缺乏 Internet 连接的问题。 2)如果你不喜欢它,就分叉并自己制作。
  • 但是 WebViews 也有一种机制可以在无法访问站点时进行处理,对吗?

标签: ios networking reachability


【解决方案1】:

可达性实际上非常有用:鉴于您的情况 (1),您忘记了它会在 both 网络启动和关闭事件上为您提供通知。这意味着您可以设置回调来处理诸如丢失网络连接之类的事件(在 WiFi 和 3G 上发生的情况比您希望的要多)。

此外,使用套接字测试连接并不是那么简单;默认情况下,套接字操作是阻塞的,尽管您可以使用异步操作(或线程),但这样做涉及编写代码。更不用说在网络关闭时尝试 DNS 以及其他此类问题。通过使用框架设置可达性目标,您可以减少自己处理各种此类问题的需要,而只需等待回调。

希望这会有所帮助,

TG

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2010-09-26
    • 2017-10-19
    • 2013-11-21
    • 2011-11-09
    相关资源
    最近更新 更多