Я прочитал
этот вопрос и нашел его ответ полезным для проверки интернет-соединения для iPhone. Я реализовал проверку в моем сообщении viewDidLoad.
Однако мое приложение загружает данные из файла XML с сервера (в пределах viewWillAppear). В этом случае проверка должна быть выполнена до того, как приложение попытается загрузить данные из интернет-источника. Моя проблема здесь в том, что проверка сети занимает несколько секунд, но приложение продолжает работу с кодом.
Это приводит к задержке проверки. Таким образом, имеется действующее интернет-соединение, но переменная bool, в которой хранится эта информация, установлена слишком поздно.
Код в viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
internetReachable = [[Reachability reachabilityForInternetConnection] retain];
[internetReachable startNotifier];
Выбранное сообщение реализовано так же, как в примере по ссылке выше. Кроме того, он устанавливает некоторые свойства bool, чтобы я мог получить доступ к состоянию соединения в приложении.
Код в представленииWillAppear
if(internetActive == TRUE)
{
NSLog(@"connected");
//Code to load XML stuff
}
else
{
NSLog(@"not connected");
}
Консоль показывает мне "не подключен". Но через несколько секунд журналы отладки в "checkNetworkStatus" показывают мне, что интернет-соединение доступно и будет установлен bool "internetActive".
Я предполагаю, что проверка сети доставляет его отчет о состоянии соединения слишком поздно для моей цели. Есть ли способ отложить приложение до тех пор, пока не будет установлено соединение? Или это приведет к сбою приложения, поскольку представление не будет отображаться в течение нескольких секунд?
Есть ли другие возможности для обеспечения связи?
Мой второй вопрос: как обеспечить доступность определенного интернет-адреса? Я выше упомянул ссылку
hostReachable = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
[hostReachable startNotifier];
для обнаружения соединения с хостом, но я хочу подробно рассказать и попытаться определить, заслуживает ли хост определенного адреса или нет. Но ввод полного адреса пути (например, «localaddress.mylan.de/lan/xml/») вместо хоста приводит к недостижимому состоянию соединения для хоста. Ввод указанного адреса в адресную строку браузера показывает мне правильный результат. Я думаю, я должен проверить это иначе, но как?
Спасибо за чтение:)