Достижимость против ответа NSURLSession для обнаружения интернет-соединения
Я создаю сообщения об ошибках для своих вызовов API и хотел бы проверить состояние, когда интернет-соединение недоступно.
dataTaskWithRequest
кажется, справиться с этим очень хорошо и возвращает NSError
с кодом -1009 с описанием отсутствия подключения к интернету. Мне не нужно ждать, пока запрос истечет.
В каких случаях я хотел бы использовать Reachability Framework вместо этого? Спасибо
1 ответ
Я провел небольшое исследование и нашел свой ответ в Apple Docs.
Рекомендуемая рекомендация - попытаться установить соединение. Если есть проблема с соединением, он дает вам объект NSError, который вы должны использовать для проверки на связность.
Apple рекомендует использовать Reachability только для диагностики ошибок и дальнейшей отладки известных проблем. Похоже, что вы должны использовать достижимость только для обнаружения, когда сеть снова подключается после сбоя.
"Всегда пытайтесь установить соединение. Не пытайтесь угадать, доступна ли сетевая служба, и не кэшируйте это определение.
В случае сбоя соединения используйте API SCNetworkReachability, чтобы помочь диагностировать причину сбоя ".
"Когда любая задача завершается, NSURLSession
объект вызывает делегата URLSession:task:didCompleteWithError:
метод с объектом ошибки или с нулем (если задача выполнена успешно).
Если задача не удалась, большинство приложений должны повторить запрос, пока пользователь не отменит загрузку или сервер не вернет ошибку, указывающую, что запрос никогда не будет выполнен успешно. Однако ваше приложение не должно повторяться немедленно. Вместо этого он должен использовать API достижимости, чтобы определить, достижим ли сервер, и должен делать новый запрос только тогда, когда он получает уведомление об изменении достижимости ".
источник: