Iphone 如何使用iOS可达性

Iphone 如何使用iOS可达性,iphone,objective-c,ios,nsurlconnection,reachability,Iphone,Objective C,Ios,Nsurlconnection,Reachability,我正在开发一款使用网络的iPhone应用程序。iPhone通过HTTP请求与我的服务器通信,应该可以在WiFi和3G上工作。 我目前使用NSURLConnection initWithRequest向我的服务器发送异步请求并获取响应(但我将很快使用ASIHTTPRequest库) 我明白,对于这种应用程序(需要互联网连接的应用程序),我应该(必须?)使用可达性 在搜索了网络并查看了苹果的可达性示例代码后,我仍然不理解一些基本的东西: 可达性的主要目的是什么? 在苹果的例子中,他们检测到主机、Wi

我正在开发一款使用网络的iPhone应用程序。iPhone通过HTTP请求与我的服务器通信,应该可以在WiFi和3G上工作。
我目前使用
NSURLConnection initWithRequest
向我的服务器发送异步请求并获取响应(但我将很快使用
ASIHTTPRequest
库)

我明白,对于这种应用程序(需要互联网连接的应用程序),我应该(必须?)使用可达性

在搜索了网络并查看了苹果的可达性示例代码后,我仍然不理解一些基本的东西:

可达性的主要目的是什么?

在苹果的例子中,他们检测到主机、WiFi和3G的网络问题,并向用户提供适当的信息。
这就是可达性的主要目的,向用户显示消息吗? 或者我是否需要将其用于其他更实际的场景?例如,如果
NSURLConnaction
请求失败,我是否需要以某种方式使用可达性来重新发送请求

什么是可达性的正确使用?

在应用程序启动时,只使用一个实例,然后监听网络变化是否很常见?或者我应该在每次网络请求之前检查自己的可达性状态吗?
使用带有主机名的
reachability
够了吗?还是我还需要
reachabilityforocalwifi
reachabilityForInternetConnection

还有一件事,我知道苹果可以拒绝使用网络且不使用可达性的应用。
我应该实施哪些“必须””方法
仅仅通知用户当前没有internet就足够了吗?

可访问性是一个网络助手实用程序类,用于获取有关连接状态的各种信息

可达性的主要目的是什么

可访问性用于查询网络状态,并注册侦听器,以便在连接更改时获得通知

这就是可达性的主要目的,向用户显示消息吗

不,它的主要用途是测试是否存在Internet连接,或者在连接发生变化时获得通知

例如,如果
NSURLConnection
请求失败,我需要使用吗 重新发送请求的可达性

是的,你可以用它。例如,我在项目中通常做的是保存所有向远程服务器发出的请求

假设我想下载10个文件。当任何文件由于没有Internet连接而导致下载过程失败时,我会将它们保存到失败下载的数组中

然后,当可达性通知我Internet连接已恢复时,我遍历该数组并再次启动下载过程

什么是可达性的正确使用

这取决于你的模式和需要

在应用程序启动时只使用一个实例,然后进行监听是否常见 网络改变

是的,我就是这么做的。在我的项目中,我只有一个下载管理器类的实例,而这个类只有一个可访问性的活动实例

或者我应该在每个网络之前检查自己的可达性状态 请求

您可以在没有多个可达性类实例的情况下实现这一点。我通常做的是在我的下载管理器中有一个方法,告诉我是否存在连接,是否使用可达性

使用带有主机名的
可访问性是否足够,或者我是否还需要
reachaabilityforocalwifi
reachaabilityforinternetconnection

我不确定这一点,但我通常做的是测试所有手段的连通性。我不区分3G和WiFi,但在一些应用中,这些信息(WiFi或3G)可能很有用。

是苹果公司的一个示例项目。人们使用它作为系统配置框架上的API。正如您已经看到的,有一些方法可以检查主机是否可以访问,等等

我使用可达性项目的方式是,我用class方法创建了一个类,如果请求数据的主机可用,该类将返回布尔值。如果是,则该方法返回
YES
,如果不是,则返回
NO
(显然)

现在,在我使用连接的应用程序中,您需要/应该检查是否可以按照Apple文档中的说明启动连接。我有一个简单的
if
,然后显示一条适当的警报消息,表示请求目前无法完成

如果第一次无法执行请求,则不要求您自动重试。这样做的主要目的是防止应用程序崩溃,同时向用户发出无法完成的消息

我自己不使用通知,但这是因为我对监控是否可以执行连接不感兴趣。这是您必须根据应用程序需求来决定的

您不必使用Reachability类中的所有方法,只需使用其中一种方法即可。它记录了不同的方法提供了什么以及何时在头文件中使用它们


记住要包括
SystemConfiguration
框架

可达性是对互联网是否可达的最佳猜测。它告诉您是否可以通过WiFi访问,或者是否只能通过移动数据访问。不能保证它是正确的。如果它说你有一个WiFi连接,那么该连接可能会在一秒钟后丢失。确定访问URL是否有效的唯一方法是进行访问并查看发生了什么。在某些情况下,当可达性表明访问是有效的