美文网首页
iOS 有效设置网络请求超时时间(干货)

iOS 有效设置网络请求超时时间(干货)

作者: 攻城狮V | 来源:发表于2021-03-12 13:41 被阅读0次

    相信你已经发现了,AFNetworking 在POST请求下,特别是设置了HTTPBody属性值的时候,timeoutInterval 设置是无效的。
    假如你的APP的tabbar 是需要访问接口动态带出的,如果网速不好的时候,你的产品就会遇到启动时间太久的情况,即使本地有缓存机制,也会因为无法控制接口请求时间而让用户等待太久。
    如果你也遇到同样的问题,请翻看如下攻略。

    锦囊如下:

    GCD + 延时处理 + 取消网络请求。

    CGFloat timeoutInterval = 5.f;//超时时长设置
    
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeoutInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                  if ( [manager.tasks count]>0) {
                      [dataTask cancel];//取消网络请求任务
                  }
        });
    

    完整代码如下:

    __block NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
    
        if (error) {          
             if (error.code == NSURLErrorCancelled) {
               // 取消了请求
              } else {
               // 其他错误
        } 
       }else{
           if (success) {
               //成功回调
         }
     }
    
    }];
    
    CGFloat timeoutInterval = 5.f;//超时时长设置
    
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeoutInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                  if ( [manager.tasks count]>0) {
                      [dataTask cancel];//取消网络请求任务
                  }
        });
    
    
      [dataTask resume];
    
    }
           
    

    相关文章

      网友评论

          本文标题:iOS 有效设置网络请求超时时间(干货)

          本文链接:https://www.haomeiwen.com/subject/grzaqltx.html