Один из моих приложений iOS использует NSURLSession
для подключения к веб-службе и запроса некоторых данных. Я только что добавил и выпустил эту функцию, и в большинстве случаев она работает без проблем. Однако рука, полная отчета клиента, что они не могут использовать эту функцию, когда устройства подключены к Интернету с использованием мобильной сети. Использование функции Wi-Fi-соединения не представляет проблемы, с другой стороны.NSURLResponse kCFURLErrorNotConnectedToInternet по мобильной связи
код нет ничего особенного, но только простой 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];
Когда пользователь запускает функцию на мобильной связи в запрос failes с кодом ошибки -1009
, который kCFURLErrorNotConnectedToInternet
. Хорошо, поэтому интернет не подключается. Но пользователи сообщают, что все другие сервисы/приложения, такие как E-Mail, Safari, WhatsApp и т. Д. Работают без проблем при одном и том же соединении.
Любая идея, что может быть здесь? Прямо сейчас я понятия не имею, в каком направлении искать проблему. В моих тестах все работает отлично, независимо от того, какая связь используется. Многие другие пользователи сообщают, что у них также нет проблем с использованием этой функции в мобильных соединениях.
Не могли бы вы показать код метода 'createCheckRequest'? Также не проверяете ли вы [Достижимость] (https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html) перед созданием запроса? – Vin
Нет, я не проверяю возможность выполнения, но добавлю это в будущую версию. Сейчас код просто запускает запрос и ждет ответа. Я удалил вызов 'createCheckRequest' из кода в вопросе, поскольку это была только ошибка копирования. Настоящий запрос уже показан: простой вызов URL с заголовком Accept и HTTPMethod. Кроме того: если конфигурация запроса неверна, она должна сбой независимо от того, какое соединение используется, не так ли? –
Я получаю жалобы от клиентов в сотовых сетях, имеющих ту же проблему. Прекрасно работает на wi-fi, но для нескольких пользователей - показывает эту ошибку. –