我正在开发一个使用网络的iPhone应用程序。 在iPhone通过HTTP请求与我的服务器进行通信,并应在WiFi和3G工作。
我目前使用NSURLConnection initWithRequest
到异步请求发送到我的服务器,并得到响应(但我将很快与工作ASIHTTPRequest
库)
我理解,这样的应用程序(应用程序需要连接互联网)我应该(必须?)使用可达性。
在网上搜索,看着苹果的可达性的示例代码后我还是不明白一些基本的东西:
什么是可达性的主要目的是什么?
在苹果的例子,他们检测网络问题与主机,WiFi和3G,并与相应的信息呈现给用户。
这是可达的主要目的,向用户显示的消息? 或者我需要将它用于其他更实际的方案是什么? 例如,如果NSURLConnaction
请求失败,我需要使用可达莫名其妙地重新发送请求?
什么是正确使用可达性?
它是常见的只使用一个实例时,应用程序启动,然后听网络的变化? 或者我应该检查自己的每一个网络请求之前,可达性状态?
是否足以使用reachabilityWithHostName
或者我还需要reachabilityForLocalWiFi
和reachabilityForInternetConnection
?
还有一两件事 ,我明白苹果可以拒绝使用网络,不使用可达应用。
什么是“ 必须 ”做的方法,我应该执行?
这将是不够的,只是告知,目前没有互联网用户?
Reachability
是网络助手实用工具类,它用于获取有关连接状态的各种信息
什么是可达性的主要目的是什么?
- 可达用于查询网络状态
- 并注册你的听众得到通知的连接发生变化时
这是可达的主要目的,向用户显示的消息?
不是,当然,它的主要作用是要么测试是否有互联网连接,或者连接的变化得到通知
例如,如果NSURLConnaction请求失败,我需要使用可达莫名其妙地重新发送请求?
是的,你可以使用它,例如我通常在我的项目做的是保存已做出到远程服务器中的所有要求,可以说,我想下载10个文件,
当任何文件未能在下载过程中,由于没有互联网连接,我将它们保存到下载失败的数组,
当可达告诉我,互联网连接已经恢复,我通过查看此数组并重新开始下载
什么是正确使用可达性?
这取决于你的模式和需求。
它是常见的只使用一个实例时,应用程序启动,然后听网络的变化?
是的,这是我做的,在我的项目,我只有一个下载管理器类的1个实例,这个类具有可达性的唯一活着的实例
或者我应该检查自己的每一个网络请求之前,可达性状态?
你可以做到这一点,而无需可达性类的多个实例,我通常做的,是让我的下载管理器里面的方法使用可达性,如果有连接,或者不告诉我。
是否足以使用reachabilityWithHostName或者我还需要reachabilityForLocalWiFi和reachabilityForInternetConnection?
我不知道这一个,但我通常做的是在所有的测试手段连接,我不通过3G或WiFi区别,但也有一些实现这一信息(WiFi或3G)可能是有用的
可达性是一个示例项目,苹果已经取得了。 人将此视为在SystemConfiguration框架的API。 正如你已经看到有一些方法来检查主机是否可达等等。
我用的是Reachabilty项目的方式是,我做了一个类返回一个布尔值,如果我从请求数据的主机可用一个类的方法。 如果是,则该方法返回YES
,如果不是,则返回NO
(明显)。
现在,在我利用连接的应用程序,你需要/应检查是否有可能开始为苹果的文档状态的连接。 我有一个简单if
再表明请求不能在瞬间完成适当的警报消息。
有没有要求,如果要求不能进行的第一次,你应该会自动重试。 这样做的主要目的是从崩溃让您的应用程序了,并在同一时间给用户,它不能完成的消息。
我不使用的通知自己,但那是因为我不感兴趣监测连接是否可以进行。 这是后话,你将有你的应用需求来决定。
你是不是被迫使用在Reachablitiy类的所有方法,只要使用其中之一。 据记载有什么不同的方法提供,当他们彪在头文件中使用。
请记住,包括SystemConfiguration
框架。
可达做出最合理的猜测互联网是否可达与否。 它会告诉你是否有通过无线网络连接,或者你是否只能通过移动数据访问。 谁也不能保证它是正确的。 如果说你有一个WiFi连接,该连接可能会丢失一秒钟后。 查找是否访问URL将工作或没有,唯一的方法是使访问,看看会发生什么。 在有些情况下,当可达说,它不反之亦然访问将工作的情况。
下面是我用Reachibility为:在下载失败,因为没有互联网连接,我会在检测的可达性的改变开始重试(实际上,几秒钟后,可达性说的WiFi回来后URL访问往往立即失败)。 之后下载失败,其中移动数据被判无效,检查移动数据可用,则要求用户允许使用移动数据。