如何将Apple的Reachbility与NSURLConnection或NSURLSession结合使用?

时间:2015-11-30 14:01:10

标签: ios networking nsurlconnection

在我的应用程序中,我使用NSURLConnection进行任何与服务器相关的API调用。

我正在使用函数NSURLConnection sendAsynchronousRequest queue completionHandler向服务器发出异步请求。有时这些请求会失败,因为没有互联网连接。

如何将Apple的Reachability Class与NSURLConnection结合使用?

2 个答案:

答案 0 :(得分:1)

你只需要这样做:

Reachability *reachability = [Reachability reachabilityForInternetConnection];    
NetworkStatus internetStatus = [reachability currentReachabilityStatus];
if (internetStatus != NotReachable) {
    // connection ok: call NSURLConnection sendAsynchronousRequest queue completionHandler here
}
else {
    // No connection
}

在下载大数据之前,请务必检查网络是否由wifi提供。您可以通过internetStatus进行检查。

答案 1 :(得分:0)

使用可达性的正确方法如下:

  1. 提出请求。
  2. 如果失败,请为您尝试访问的特定主机创建可访问性侦听器(reachabilityWithHostName :)。
  3. 当该类表明可访问性已更改时,请检查它是否表示现在可以访问,如果是,则处置可访问性对象并重新发出请求。
  4. 你绝对应该做的事情是关于可达性的初始请求。可访问性API可能与现实不同步,导致您的应用无法提出原本会成功的请求。

    但是,根据总体可达性限制周期性请求的重试率是可以接受的。但是,如果这些请求中的任何一个成功,那么您的应用应该表现得好像可达性使它成为绿灯,即使它没有。