移动连接上的 NSURLResponse kCFURLErrorNotConnectedToInternet

NSURLResponse kCFURLErrorNotConnectedToInternet on mobile connection

我的一个 iOS 应用程序使用 NSURLSession 连接到网络服务并查询一些数据。我刚刚添加并发布了这个功能,在大多数情况下它似乎没有任何问题。 然而,一大堆客户报告说,当设备使用移动网络连接到互联网时,他们无法使用该功能。在 WiFi 连接上使用该功能没有问题另一方面。

代码没什么特别的,只是一个简单的 NSURLReqeust 使用 NSURLSession

NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:[NSOperationQueue mainQueue]];

NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:myServiceURL];
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPMethod:@"GET"];

[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    if (error != nil) {
        // Log error...
    } else {
        // Handle response...
    }
}] resume];

当用户 运行 移动连接上的功能请求失败,错误代码 -1009kCFURLErrorNotConnectedToInternet。好的,所以没有互联网连接。但用户报告说,所有其他 services/apps,如电子邮件、Safari、WhatsApp 等,在同一连接上都可以正常工作。

知道这里会发生什么吗?现在我不知道从哪个方向搜索问题。在我的测试中,无论使用何种连接,一切都正常。许多其他用户报告说,在移动连接上使用该功能也没有问题。

对于所有可能遇到相同问题的人:解决方案非常简单。

出于某种原因(用户不知道为什么)我的应用已停用移动数据使用。这可以在 Settings/Mobil Data/Use Mobile Data for:

下的 iOS 系统设置中完成

我也不知道怎么会这样。在解决这个错误之前,我什至不知道可以在每个应用程序的基础上禁用移动数据使用。也许这是偶然发生的,或者是系统的一些错误?但是,在用户重新启用移动数据使用后,我的应用程序再次按预期运行。