Опрашивать сеть, чтобы определить, доступна ли сеть?

#objective-c #ios #asihttprequest #user-experience #reachability

#objective-c #iOS #asihttprequest #пользовательский интерфейс #достижимость

Вопрос:

Я пытался реализовать ASIHTTPRequest загрузку файлов с сервера. У меня есть опция, при которой пользователь может добавлять загрузки в очередь и ASINetworkQueue обрабатывать загрузки файлов один за другим.

Я пытаюсь реализовать функцию, при которой, если пользователь теряет свое сетевое соединение, я ASINetworkQueue должен постоянно опрашивать доступность сети. Как только подключение снова станет доступным, приложение начнет загрузку файлов с того места, на котором оно остановилось.

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


Чтобы заставить мое приложение загружать файл с того места, где он остановился, я использую ASIHTTPRequest метод

 [request setAllowResumeForFileDownloads:YES];
 

Ответ №1:

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

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

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

1. Я искал именно то , о чем просит ОП . ASIHTTPREQUEST также ссылается на достижимость . Должны ли мы вызывать достижимость напрямую? или ASIHTTPREQUEST предоставляет способ сделать это, предоставив над ним некоторый слой.

2. @JavaKaBaby, да, ASIHTTPRequest использует достижимость, и, насколько я могу судить, вы можете положиться на него для выполнения безопасных запросов. Мой стиль кодирования — «помешанный на контроле», поэтому мне нравится контролировать как можно больше рабочего процесса. Например, если бы я писал это приложение, при запуске приложения я бы проверил, есть ли какие-либо незавершенные загрузки, а затем, если бы они были, я бы проверил доступность для действительного соединения, и если бы только тогда я продолжил указанные загрузки.