iOS 12 URLSession прерывается, когда HTTP-запрос попадает и приложение внезапно входит в фоновый режим - PullRequest
0 голосов
/ 14 декабря 2018

Для всех версий iOS <12 все работает нормально.Я тестирую (iOS ~> 12.x) в своем приложении, используя базовую URLSession, а также пробовал с Alamofire.

Тестовые шаги:

1. Нажмите Любой вызов HTTP / API.

2. Немедленно нажмите на кнопку «Домой».

При поступлении через какое-то время приходит

2018-12-14 13:43:46.968901+0530 NewReader[15364:4847228] Task <519A3F27-90DA-439F-8711-B07EFA62E823>.<1> load failed with error Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={_NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <519A3F27-90DA-439F-8711-B07EFA62E823>.<1>, _kCFStreamErrorDomainKey=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <519A3F27-90DA-439F-8711-B07EFA62E823>.<1>"
), _kCFStreamErrorCodeKey=53} [53]

Я не знаю, как другие приложения справляются с этой проблемой.Также поднят вопрос здесь

Сообщите мне исправления или обходной путь.

PS: Я уже пробовал с Отправка или Задержка не работает.

1 Ответ

0 голосов
/ 14 декабря 2018

Вам необходимо настроить URLSession с поддержкой фона.Это всегда имело место, но ранее при переходе на задний план он продолжал работать в течение короткого времени (обычно до 3 минут).Возможно, он стал более строгим в последнем обновлении, или ваш запрос занимает больше времени, чем доступно.

Во-первых, вы должны включить фоновые режимы на вкладке возможностей.

Вот пример кодачтобы показать, как настроить URLSession готовый для фона

private lazy var bgSession: URLSession = {
    let config = URLSessionConfiguration.background(withIdentifier: Constant.sessionID.rawValue)
    //config.isDiscretionary = true
    config.sessionSendsLaunchEvents = true
    return URLSession(configuration: config, delegate: self, delegateQueue: nil)
}()

Пример кода и дополнительную информацию можно найти в следующей статье

...