首页 文章

如何使用iOS Reachability

提问于
浏览
33

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

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

在搜索网页并查看Apple的Reachability示例代码后,我仍然不了解一些基本内容:

What is the main purposes of Reachability?

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

What is the proper use of Reachability?

在应用启动时仅使用 one 实例,然后收听网络更改是否常见?或者我应该在每次网络请求之前检查自己的可达性状态?
是否足以使用 reachabilityWithHostName 或者我是否还需要 reachabilityForLocalWiFireachabilityForInternetConnection

One more thing ,我知道苹果可以拒绝使用网络但不使用可达性的应用程序 .
我应该实施哪些“ must ”方法?
仅通知用户目前没有互联网是否足够?

3 回答

  • 47

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

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

    • 可达性用于查询网络状态

    • 并注册您的听众,以便在连接发生变化时获得通知

    这是Reachability的主要目的,向用户显示消息吗?

    当然,它的主要用途是测试是否存在互联网连接,或者在连接发生变化时获得通知

    例如,如果NSURLConnaction请求失败,我是否需要以某种方式使用Reachability重新发送请求?

    是的你可以使用它,例如我通常在我的项目中做的是保存已经对远程服务器发出的所有请求,假设我想下载10个文件,

    当任何文件由于没有互联网连接而导致下载过程失败时,我将它们保存到一系列失败的下载,

    当可达性通知我已恢复互联网连接时,我遍历此阵列并再次开始下载过程

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

    这取决于您的模式和需求 .

    在应用启动时只使用一个实例,然后收听网络更改是否常见?

    是的,这就是我做的,在我的项目中我只有一个下载管理器类的实例,并且这个类有唯一的活动实例可达性

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

    你可以这样做而不需要多个Reachability类实例,我通常做的是在我的下载管理器中有一个方法,告诉我如果有连接则使用Reachability .

    使用reachabilityWithHostName是否足够,还是还需要reachabilityForLocalWiFi和reachabilityForInternetConnection吗?

    我不确定这个,但我通常做的是测试所有手段的连接,我不区分3g或wifi,但有一些实现这个信息(wifi或3g)可能是有用的

  • 0

    Reachability是Apple制作的示例项目 . 人们将其用作SystemConfiguration框架上的API . 正如您已经看到的那样,有一些方法可以检查主机是否可以访问等等 .

    我使用Reachabilty项目的方法是,我创建了一个带有类方法的类,如果我请求数据的主机可用,则返回一个布尔值 . 如果是,则该方法返回 YES ,如果不是,则返回 NO (显然) .

    现在,在我正在使用连接的应用程序中,您需要/应该检查是否可以像Apple文档所述启动连接 . 我有一个简单的 if 然后显示一个适当的警报消息,表示此刻无法完成请求 .

    如果第一次无法执行请求,则无需再次自动尝试 . 这样做的主要目的是使您的应用程序远离崩溃,同时向用户发出无法完成的消息 .

    我不用我自己的通知,但那是因为我不想监视是否可以进行连接 . 这是您必须根据应用程序需求决定的 .

    您不必使用Reachablitiy类中的所有方法,只需使用其中一个方法即可 . 记录了不同方法提供的内容以及何时在头文件中使用它们 .

    请记住包含 SystemConfiguration 框架 .

  • 12

    可达性可以最好地猜测互联网是否可达 . 它会告诉您是否可以通过WiFi访问,或者您是否只能通过移动数据访问 . 无法保证它是正确的 . 如果它说您有WiFi连接,那么该连接可能会在一秒后丢失 . 查找访问URL是否有效的唯一方法是进行访问并查看会发生什么 . 有些情况下,当Reachability说它没有时,访问将起作用,反之亦然 .

    以下是我使用Reachibility的原因:由于没有互联网连接,下载失败后,我会在Reachability检测到更改后开始重试(实际上几秒钟后;在Reachability说WiFi返回后,URL访问通常会立即失败) . 在禁止移动数据的下载失败后,检查移动数据是否可用,然后要求用户允许使用移动数据 .

相关问题