Подтвердить что ты не робот

Как использовать возможности iOS

Я разрабатываю приложение для iPhone, использующее сеть. IPhone общается с моим сервером по HTTP-запросу и должен работать на WiFi и 3G.
В настоящее время я использую NSURLConnection initWithRequest для отправки асинхронных запросов на мой сервер и получения ответов (но я скоро перейду к работе с библиотекой ASIHTTPRequest)

Я понял, что с такими приложениями (приложениями, которые требуют подключения к интернету) я должен (должен?) использовать Reachability.

После поиска в Интернете и просмотра примера кода Apple Reachability я до сих пор не понимаю некоторые основные вещи:

Каковы основные цели достижимости?

В примере с яблоком они обнаруживают сетевые проблемы с хостом, WiFi и 3G и представляют пользователю соответствующее сообщение.
Является ли это главной целью "Доступность", чтобы показать пользователю сообщение? Или мне нужно использовать его для других более практичных сценариев? Например, если запрос NSURLConnaction завершился неудачно, мне нужно как-то использовать Reachability для повторной отправки запроса?

Какое правильное использование достижимости?

Обычно при запуске приложения используется только один, а затем слушать сетевые изменения? Или я должен проверить статус достижимости перед каждым сетевым запросом?
Достаточно ли использовать reachabilityWithHostName или мне нужно также reachabilityForLocalWiFi и reachabilityForInternetConnection?

Еще одна вещь. Я понял, что яблоко может отклонять приложения, которые используют сеть, и не использовать Reachability.
Каковы методы must ", которые я должен реализовать?
Будет ли достаточно, чтобы просто уведомить пользователя о том, что в настоящее время нет Интернета?

4b9b3361

Ответ 1

Reachability - это класс вспомогательной утилиты сети, используемый для получения различной информации о состоянии подключения

Каковы основные цели достижимости?

  • Досягаемость используется для запроса состояния сети.
  • и зарегистрировать своих слушателей, чтобы получать информацию о произошедших изменениях связи.

Является ли это основной целью Reachability, чтобы показать пользователю сообщение?

Нет, конечно, его основное использование - либо проверить, есть ли подключение к Интернету, либо получить уведомление, если изменение связи

Например, если запрос NSURLConnaction был неудачным, мне нужно использовать Достижимость как-то отправить запрос повторно?

Да, вы могли бы использовать его, например, то, что я обычно делаю в своем проекте, - это сохранить все запросы, которые были сделаны на удаленном сервере, скажем, я хочу загрузить 10 файлов,

Когда какой-либо файл выходит из процесса загрузки из-за отсутствия подключения к Интернету, я сохраняю их в массиве неудачных загрузок,

Когда доступность сообщает мне, что подключение к Интернету было восстановлено, итерация через этот массив и повторный запуск процесса загрузки

Какое правильное использование достижимости?

Это зависит от ваших моделей и потребностей.

Общепринято использовать только один экземпляр при запуске приложения, а затем прослушать к изменениям сети?

Да, это то, что я делаю, в моих проектах у меня есть только один экземпляр класса диспетчера загрузки, и у этого класса есть единственный живой экземпляр Reachability

Или я должен проверить статус достижимости перед каждой сетью просить?

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

Достаточно ли для использования достижимостиWithHostName или мне нужно также достижимостьForLocalWiFi и достижимостьForInternetConnection?

Не уверен в этом, но то, что я обычно делаю, это проверить подключение на всех средствах, я не различаю 3g или wifi, однако есть некоторые варианты реализации, которые могут быть полезны этой информации (wifi или 3g)

Ответ 2

Reachability - пример проекта, который сделал Apple. Люди используют это как API в рамках SystemConfiguration. Как вы уже видели, есть способы проверить, доступен ли хост и т.д.

То, как я использую проект Reachabilty, заключается в том, что я создал класс с методом класса, который возвращает логическое значение, если доступен хост, запрашивающий данные. Если это тогда, метод возвращает YES, а если нет, он возвращает NO (очевидно).

Теперь, в приложении, где я использую подключения, вам нужно/нужно проверить, можно ли запустить соединение, как указано в документации Apple. У меня есть простой if, а затем показано соответствующее предупреждающее сообщение о том, что запрос не может быть выполнен в настоящий момент.

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

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

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

Не забудьте включить фреймворк SystemConfiguration.

Ответ 3

Достижимость позволяет лучше понять, доступен ли интернет или нет. Он сообщает вам, есть ли у вас доступ через WiFi или у вас есть доступ только через мобильные данные. Нет никакой гарантии, что это правильно. Если он говорит, что у вас есть WiFi-соединение, это соединение может быть потеряно на одну секунду позже. Единственный способ найти, будет ли работать с URL-адресом работать, или нет, - это сделать этот доступ и посмотреть, что произойдет. Бывают ситуации, когда доступ будет работать, когда Reachability говорит, что это не так, и наоборот.

Вот то, что я использую Reachibility для: После загрузки не удалось, потому что не было подключения к Интернету, я начну повторять попытку, когда Reachability обнаружит изменение (фактически через несколько секунд, доступ к URL-адресу часто терпит неудачу сразу после того, как Reachability сообщает, что WiFi возвращается). После того, как загрузки не удались, если Mobile Data были запрещены, проверьте, доступна ли мобильная информация, и попросите пользователя разрешить использование мобильных данных.