Как следует следить за «очередью» на iOS с помощью AFNetworking / NSURLConnection

#ios #afnetworking #nsurlconnection

#iOS #afnetworking #nsurlconnection

Вопрос:

В моем приложении есть следующая реализация:
— Список тем для просмотра с использованием их идентификаторов.
— Система, которая повторяет попытки подключения при сбое из-за сбоя Интернета / сбоя сервера.

Допустим, пользователь очень быстро нажимает 3 кнопки «Следовать».
Для каждого из нажатий запускается NSURLConnection, чтобы назначить этому пользователю эту тему Как к этому следует подходить, учитывая следующие случаи, которые могут возникнуть:

А) Все 3 соединения завершаются с ошибкой. Все 3 необходимо повторить, но у каждого есть свой параметр — идентификатор темы. Б) Только 2 соединения завершаются неудачно, третье завершается успешно.
C) Первое соединение завершается с ошибкой, но после того, как пользователь нажал кнопку отмены подписки, которая также завершается с ошибкой.

В данном случае я имею в виду, что появляется всплывающее окно, предлагающее пользователю повторить попытку.
Это произошло потому, что NSURLConnection получил 404 или время ожидания.

Комментарии:

1. Кажется, это очень широкий вопрос, и это не столько проблема программирования, сколько выбор дизайна…

Ответ №1:

Как правило, вы не должны заставлять пользователя закрывать всплывающее окно при сбое соединения, а должны показывать некоторый индикатор в пользовательском интерфейсе. В конце концов, обычно пользователь ничего не может сделать, чтобы исправить соединение, и пользователь не запросил бы данные, если бы он / она этого не хотел, поэтому повторная попытка, как только сеть возвращается, почти всегда является правильным поведением, что делает действие пользователя излишним.

В любом случае начните отслеживать изменения достижимости, затем повторите попытку, когда достижимость сообщает, что запрос может быть выполнен успешно.

Комментарии:

1. Спасибо за ваш ответ. Всплывающее окно сообщит пользователю, что его интернет отключен (если это так) или что сервер не работает. Приложение отображает весь свой интерфейс на основе данных, загруженных с сервера, поэтому, если соединение отключено, пользователю не должно быть смысла использовать приложение.

2. Я хотел сказать, что у пользователя нет причин закрывать диалоговое окно. Это дополнительное нажатие, которое не приносит никакой реальной пользы ни вам, ни пользователю. Если вы показываете это сообщение в представлении, которое скользит вниз под строкой меню, вы можете сдвинуть его обратно, когда сеть вернется, и пользователь по-прежнему будет проинформирован о проблеме без необходимости нажатия на экран.