2016-03-18 4 views
1

Один из моих приложений 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 и т. Д. Работают без проблем при одном и том же соединении.

Любая идея, что может быть здесь? Прямо сейчас я понятия не имею, в каком направлении искать проблему. В моих тестах все работает отлично, независимо от того, какая связь используется. Многие другие пользователи сообщают, что у них также нет проблем с использованием этой функции в мобильных соединениях.

+0

Не могли бы вы показать код метода 'createCheckRequest'? Также не проверяете ли вы [Достижимость] (https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html) перед созданием запроса? – Vin

+0

Нет, я не проверяю возможность выполнения, но добавлю это в будущую версию. Сейчас код просто запускает запрос и ждет ответа. Я удалил вызов 'createCheckRequest' из кода в вопросе, поскольку это была только ошибка копирования. Настоящий запрос уже показан: простой вызов URL с заголовком Accept и HTTPMethod. Кроме того: если конфигурация запроса неверна, она должна сбой независимо от того, какое соединение используется, не так ли? –

+0

Я получаю жалобы от клиентов в сотовых сетях, имеющих ту же проблему. Прекрасно работает на wi-fi, но для нескольких пользователей - показывает эту ошибку. –

ответ

0

для всех, как может возникнуть та же проблема: решение довольно простое.

По какой-то причине (пользователь понятия не имеет, почему) Для данных использования мобильных было отключено для моего использования.. Это можно сделать в настройках системы iOS под Settings/Mobil Data/Use Mobile Data for:

Я также не знаю, как это может произойти. Прежде чем приступить к этой ошибке, я даже не знал, что можно отключить использование мобильных данных для каждого приложения. Может быть, это произошло случайно или какой-то ошибкой системы? Однако после того, как пользователь снова включил использование мобильных данных, мое приложение снова работает как ожидалось.