nsurlsession ios 13 蜂窝错误域=NSURLErrorDomain 代码=-1009 "The Internet connection appears to be offline."

nsurlsession ios 13 cellular Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."

    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 请求正常(弃用警告除外)

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

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