首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLSessionTask从不在WiFi关闭时回电话

NSURLSessionTask从不在WiFi关闭时回电话
EN

Stack Overflow用户
提问于 2017-02-20 19:46:00
回答 1查看 665关注 0票数 0

当我关闭WiFi连接并在iPhone 6s10.2模拟器上运行以下代码时,就不会执行回调。我预期回调会很快启动,出现“没有互联网连接”这样的错误。

代码语言:javascript
复制
NSLog(@"request-start");
NSURLRequest* request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://www.google.com"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:0];
task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    NSLog(@"request-end");
}];
[task resume];

我的问题

当应用程序第一次加载时,我正在获取数据。如果wifi被关闭,我需要显示一个错误。如果我设置了一个超时,它就会被遵守--但是它需要是10+秒,我不想让它们等待。我也尝试过检测具有可达性的网络状态,但是当首次加载应用程序时,网络状态通常是unknown

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-20 20:05:21

timeoutIntervalForResource

此属性根据此配置确定会话中所有任务的资源超时间隔。资源超时间隔控制在放弃之前等待整个资源传输的时间(以秒为单位)。资源计时器在请求启动时启动,并对进行计数,直到请求完成或达到此超时间隔(以第一位为准)为止。 默认值是7天.

timeoutIntervalForRequest

重要 如果原始请求由于超时而失败,则由后台会话创建的任何上载或下载任务都会自动重新尝试。若要配置允许重新尝试或传输上载或下载任务的时间,请使用timeoutIntervalForResource属性。 默认值为60.

因此,如果没有设置超时,您的连接将运行7天。

通常,如果NSURLSession后台会话出现故障,则不会导致任务失败。相反,它继续寻找一个运行请求并在那个时候重试的好时机。这种情况一直持续到资源超时过期(即用于创建会话的timeoutIntervalForResource对象中的NSURLSessionConfiguration属性中的值)。该值的当前默认值是一周!

来源

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42353046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档