#ios #afnetworking #nsurlconnection
#iOS #afnetworking #nsurlconnection
Вопрос:
В моем приложении есть следующая реализация:
— Список тем для просмотра с использованием их идентификаторов.
— Система, которая повторяет попытки подключения при сбое из-за сбоя Интернета / сбоя сервера.
Допустим, пользователь очень быстро нажимает 3 кнопки «Следовать».
Для каждого из нажатий запускается NSURLConnection, чтобы назначить этому пользователю эту тему Как к этому следует подходить, учитывая следующие случаи, которые могут возникнуть:
А) Все 3 соединения завершаются с ошибкой. Все 3 необходимо повторить, но у каждого есть свой параметр — идентификатор темы. Б) Только 2 соединения завершаются неудачно, третье завершается успешно.
C) Первое соединение завершается с ошибкой, но после того, как пользователь нажал кнопку отмены подписки, которая также завершается с ошибкой.
В данном случае я имею в виду, что появляется всплывающее окно, предлагающее пользователю повторить попытку.
Это произошло потому, что NSURLConnection получил 404 или время ожидания.
Комментарии:
1. Кажется, это очень широкий вопрос, и это не столько проблема программирования, сколько выбор дизайна…
Ответ №1:
Как правило, вы не должны заставлять пользователя закрывать всплывающее окно при сбое соединения, а должны показывать некоторый индикатор в пользовательском интерфейсе. В конце концов, обычно пользователь ничего не может сделать, чтобы исправить соединение, и пользователь не запросил бы данные, если бы он / она этого не хотел, поэтому повторная попытка, как только сеть возвращается, почти всегда является правильным поведением, что делает действие пользователя излишним.
В любом случае начните отслеживать изменения достижимости, затем повторите попытку, когда достижимость сообщает, что запрос может быть выполнен успешно.
Комментарии:
1. Спасибо за ваш ответ. Всплывающее окно сообщит пользователю, что его интернет отключен (если это так) или что сервер не работает. Приложение отображает весь свой интерфейс на основе данных, загруженных с сервера, поэтому, если соединение отключено, пользователю не должно быть смысла использовать приложение.
2. Я хотел сказать, что у пользователя нет причин закрывать диалоговое окно. Это дополнительное нажатие, которое не приносит никакой реальной пользы ни вам, ни пользователю. Если вы показываете это сообщение в представлении, которое скользит вниз под строкой меню, вы можете сдвинуть его обратно, когда сеть вернется, и пользователь по-прежнему будет проинформирован о проблеме без необходимости нажатия на экран.