У меня есть приложение iOS, которое извлекает данные пользователя с сервера в applicationDidBecomeActive
.iOS - Первый сетевой запрос завершается после разблокировки
Если пользователь нажимает кнопку «Домой», то возвращается в приложение через значок приложения или экран многозадачности, функция работает нормально.
Если пользователь блокирует устройство в среднем (либо находясь в приложении, либо нажав на кнопку «домой», а затем блокируя), сетевой запрос завершается с ошибкой. Я использую Alamofire. Объект ответа nil
и result.data
пуст. На сервере также не поступает запрос. Сбой происходит мгновенно.
, но я ничего не бегу в фоновом режиме. Этот сетевой запрос выполнен в 'applicationDidBecomeActive', так что в этот момент мое приложение должно иметь доступ к сети? – AndyRyan
Я предполагаю, что NSURLSession (который Alamofire.Manager является кешированием) имеет один или несколько сокетов, которые он поддерживает (возможно, чтобы не пересматривать соглашения TLS). Затем, когда устройство заблокировано, ОС восстанавливает эти сокеты. Следующий запрос на них приводит к ошибке EBADF из системного вызова, который переводится в NSError с локализованным описанием «connection closed». – typedef
Любая идея, как я могу обойти это? Я попытался найти какую-то функцию обновления. Единственное, о чем я сейчас думаю, это повторить запрос – AndyRyan