nsurlsession ios 13手机错误域= NSURLErrorDomain代码= -1009“ Internet连接似乎已脱机。”

时间:2019-09-22 20:03:26

标签: ios nsurlsession ios13

    NSString *dataUrl = @"https://st2.depositphotos.com/2001755/5408/i/450/depositphotos_54081723-stock-photo-beautiful-nature-landscape.jpg";
    NSURL *url = [NSURL URLWithString:dataUrl];
    NSURLSessionConfiguration *configuration = NSURLSessionConfiguration.defaultSessionConfiguration;
    configuration.allowsCellularAccess = YES;
    configuration.waitsForConnectivity = YES;
    configuration.allowsExpensiveNetworkAccess = YES;
    configuration.allowsConstrainedNetworkAccess = YES;
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
    NSURLSessionDataTask *downloadTask = [session
      dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        NSLog(@"%@", error);
    }];
    [downloadTask resume];

我们有一个旧的应用程序,它在2015年开发,具有许多旧的代码。在iOS 13上,不幸的是在CELLULAR上,所有NSURLSession请求(不仅对我们的服务器,而且对任何服务器)都失败,并显示错误:

Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={_kCFStreamErrorCodeKey=50, NSUnderlyingError=0x280526af0 {Error Domain=kCFErrorDomainCFNetwork Code=-1009 "(null)" UserInfo={NSURLErrorNetworkUnavailableReasonKey=1, kCFStreamErrorCodeKey=50, kCFStreamErrorDomainKey=1}}, NSURLErrorNetworkUnavailableReasonKey=1, NSLocalizedDescription=The Internet connection appears to be offline.

其中NSURLErrorNetworkUnavailableReasonKey = 1是URLError.NetworkUnavailableReason.expensive

NSURLConnection请求很好(除弃用警告外)

我应该打开什么全局设置,或者至少打开本地设置才能成功请求?

1 个答案:

答案 0 :(得分:1)

经过7个小时的调查,我发现问题出在CCInfiniteScrolling库(github.com/ziryanov/CCInfiniteScrolling)。 NSObject类别和错误的运行时编码存在问题:NSObject + DProperty.m。我们将所有内容重写为object_associations,并且一切正常。