Как я могу ограничить все сетевые запросы подключением Wi-Fi с помощью AFNetworking 2.0?

У меня довольно странный вопрос. Я хочу знать, можно ли заблокировать любые запросы (текущие и будущие) с помощью AFNetworking 2.0. Моему приложению нужно сделать что-то вроде этого: если пользователь не подключен к Wi-Fi -> блокировать любые запросы, которые могут быть у приложения. Я только нашел способ заблокировать все текущие запросы:

[self.manager.operationQueue cancelAllOperations];

Любая помощь приветствуется и высоко ценится


person alex    schedule 21.01.2014    source источник
comment
Вы поддерживаете только iOS 7 или более старые версии?   -  person David Snabel-Caunt    schedule 23.01.2014
comment
Я тоже поддерживаю ios 6   -  person alex    schedule 23.01.2014


Ответы (3)


Начиная с iOS 6, NSMutableURLRequest позволяет указать, можно ли сделать запрос по сотовой связи, позвонив по номеру setAllowsCellularAccess:. Это объясняется этим документ Apple. Вам нужно будет установить это для каждого запроса, который вы делаете.

С AFNetworking самый простой способ подключиться к AFHTTPRequestOperationManager — это использовать собственный подкласс requestSerializer. и переопределить -requestWithMethod:URLString:parameters:error: для вызова super и изменить запрос с помощью setAllowsCellularAccess:.

Если вы также используете NSURLSession в путях кода iOS 7, вы можете использовать NSURLSessionConfiguration, для свойства allowsCellularAccess которого задано значение NO. Это устанавливается только один раз за сеанс.

person David Snabel-Caunt    schedule 25.01.2014
comment
Гарантирует ли установка с setAllowsCellularAccess по NO, что связь будет осуществляться через Wi-Fi, если на устройстве включена и Wi-Fi, и сотовая связь? - person iphondroid; 08.12.2014
comment
вы можете просто setAllowsCellularAccess ответить YES на NSMutableURLRequest, возвращенный -requestWithMethod:URLString:parameters:error:, если вы не хотите создавать подклассы - person blueether; 27.04.2015

Я не знаю, можно ли это сделать с помощью AFNetworking, но кажется, что вы можете добиться этого с помощью пользовательского NSURLProtocol:

Могу ли я заблокировать доступ к сети на определенный момент?

person nnarayann    schedule 21.01.2014

Да, это возможно с помощью AFNetworking 2.0. Пожалуйста, проверьте ссылки ниже.
1. AFNetworking + cancelAllRequests
2. Как отменить сетевой запрос с помощью afnetworking

< strong>Обновление:-
Я уверен, что вы также хотели бы проверить эту ссылку:- AFNetworking и сценарий отсутствия подключения к Интернету

person Piyush Dubey    schedule 22.01.2014
comment
Спасибо за ваш ответ. Метод cancelAllOperations отменяет только все текущие операции. Мне нужно заблокировать все будущие запросы, которые может сделать пользователь. Мой сценарий заключается в том, что если пользователь не хочет использовать сотовые данные (он хочет использовать только Wi-Fi), я должен заблокировать любые запросы, которые может сделать приложение. пока он не согласится использовать сотовые данные в этом приложении. Сейчас я использую логическое значение, чтобы пропустить любой запрос, но это нужно делать для каждого запроса индивидуально. Я искал что-то более высокого уровня в AFNetworking 2.0, которое не разрешало бы никаких будущих запросов, которые может сделать пользователь. - person alex; 22.01.2014