Информационная ветка об AFNetworking GitHub с соответствующими деталями и справочной информацией: Проблема AFNetworking
С точки зрения обходных путей, здесь можно сделать три вещи, и может иметь смысл выполнить все три или некоторое подмножество, в зависимости от требований вашего реального приложения.Для остроумия:
A.Если вы регулярно входите и выходите из приложения - например, вы переводите пользователя в Safari, чтобы он мог выполнить какую-либо задачу аутентификации, а затем вы хотите, чтобы Safari возвращал пользователя обратно в ваше приложение - возможно, имеет смысл использоватьФоновая задача UIApplication для предотвращения приостановки приложения во время этих отскоков.
Этот подход будет поддерживать работу приложения только в течение нескольких минут, но если этого достаточно для обычных пользовательских сценариев, то его стоит выполнить.
B.Вы можете повторить запросы самостоятельно.Даже если вы не сталкивались с этой проблемой, это, как правило, хорошая идея.Существует огромное количество временных проблем, которые могут привести к сбою запросов, и одна повторная попытка часто поможет вам справиться с ошибкой без дальнейших корректирующих действий.
Очевидная проблема здесь - идемпотентность.Вы можете повторять идемпотентные запросы без каких-либо забот, но вам понадобится некоторая хитрая логика для конкретного приложения, если вы хотите повторить неидемпотентные запросы.
C.Вы можете лишить законной силы свой сеанс, когда вы уходите в фоновый режим, а затем воссоздавать сеанс, когда вы возвращаетесь на передний план.Новый сеанс не будет использовать какие-либо соединения со старым, поэтому эта проблема просто не может возникнуть.
Как я упоминал ранее, объединение подходов может иметь смысл.Например, A и C хорошо работают вместе, что позволяет избежать затрат на аннулирование сеанса, если у вас не истекло время фонового выполнения.И вы, возможно, захотите сделать B, потому что у него есть преимущества вне этой проблемной области.