Я реализовал классы Reachability после этого ответа .
У меня две разные проблемы, и я надеюсь на вашу помощь ...
Я поместил уведомитель в свой viewDidLoad:
(void)viewDidLoad
{
[super viewDidLoad];
// check for internet connection
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
internetReachable = [Reachability reachabilityForInternetConnection];
[internetReachable startNotifier];
// check if a pathway to a random host exists
hostReachable = [Reachability reachabilityWithHostName: @"www.apple.com"];
[hostReachable startNotifier];
}
и я проверяю подключение к Интернету в моем представлении
(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
//check connection when access to the view
if (internetActive)
{
[self loadData];
}
else
{
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:@"Internet connection not available" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
}
ПЕРВАЯ ПРОБЛЕМА: КАК ПРОВЕРИТЬ ПОДКЛЮЧЕНИЕ К ИНТЕРНЕТУ В ПЕРВЫЙ РАЗ
При первом доступе к представлению отображается предупреждение, даже если подключение к Интернету в порядке. Это, я думаю, потому что уведомитель еще не получил уведомление о соединении. Как с этим справиться?
ВТОРАЯ ПРОБЛЕМА: ЕСЛИ ИЗМЕНЯЕТСЯ СОСТОЯНИЕ СОЕДИНЕНИЯ (т. Е. ОТ ОТСУТСТВУЕТ В НАСТОЯЩЕЕ ВРЕМЯ), УВЕДОМИТЕЛЬ НЕ СОВЕТУЕТ ОБ ЭТОМ
Если я запускаю приложение без подключения к интернету, предупреждение отображается правильно. Но если Интернет снова доступен, каждый раз, когда я получаю доступ к представлению, предупреждение продолжает отображаться, поскольку изменение доступности Интернета не перехватывается. Я думаю, что это связано с выполнением уведомителя в том же потоке. Как реализовать эту проверку соединения, чтобы перехватить также изменения статуса соединения?
Заранее спасибо и с Новым годом,
Яс