У приложения есть много задач, когда приложение находится в фоновом состоянии, в основном работает с Bluetooth-ключами и получает/передает данные на сервер. Иногда, когда приложение в фоновом состоянии отправляет запрос, система «замораживает» этот запрос. И после запуска приложения, система «замораживается», и у нас естьЗамораживание http-запросов в фоновом состоянии
Error Domain=kCFErrorDomainCFNetwork Code=-1001 "The request timed out.
App использовать последний AFNetworking 3.1.0 на данный момент, и помощник BFTask.
Для получения более подробной информации. Представьте, пользователь использует приложение по какой-то причине, после того, как приложение переходит в фоновое состояние (пользователь нажимает кнопку дома или блокировку), приложение обычно продолжает работать в фоновом режиме. Система или пользователь могут убить приложение. Приложение может проснуться после некоторого взаимодействия с пользователем (через геолокационные службы, геообслуживание) в момент пробуждения, приложение перезапускает и отправляет запрос на разрывание, проверяя пользователя (авторизация, получает новый токен и т. Д.). На данный момент мы можем увидеть в журналах:
> Request method: POST url: https://******/v1/account/token headers: {
UserName = "***@***.com";
"grant_type" = password;
password = ****
} at time: 2016-08-15 15:30:45 +0000
код:
if ([request.method isEqualToString:@"GET"]) {
return [manager GET:request.url parameters:request.params progress:nil success:^(NSURLSessionTask *operation, id responseObject) {
} failure:^(NSURLSessionTask *operation, NSError *error) {
processError(operation, error);
}
}];
после некоторого периода времени запуска пользователем приложения, и этот код пытается продолжить выполнение, и у нас есть ошибка с тайм-аут.
error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x156d8ce10
{Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)"
UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=https://******/v1/account/token, NSErrorFailingURLKey=https://******/v1/account/token, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}
at time: 2016-08-15 15:46:28 +0000
Разница во времени около 16 минут, когда пользователь снова запускает приложение. И это может быть в другой части http-запросов
Вопрос в том, почему iOS заморозит запросы в фоновом режиме и как исправить это.
Привет, мы видели эту проблему. 1. Используете ли вы симулятор для запуска этой программы? 2. Не могли бы вы попытаться переключиться на другую сеть и повторить попытку? 3. При использовании симулятора - iOS Simulator -> Сбросить содержимое и настройки –
@AmodGokhale, это все на реальном устройстве, с Wi-Fi или сотовой сетью –
выглядит похоже - https://github.com/AFNetworking/AFNetworking/issues/3569. В нашем случае мы обработали исключение с типом исключения –