iOS / iPhone Reachability - Как только проверить, когда интернет потерян / недоступен, используя Reachability.m / .h

В настоящее время я использую класс apple reachability.m /. h, и он работает, за исключением того, что он уведомляет меня о любых изменениях, в то время как я хотел бы уведомлять пользователя только в том случае, если сеть недоступна. В настоящее время, если у меня есть подключение к Интернету, а затем я теряю сеть, он сообщает мне. Однако при повторном подключении к сети он также сообщает мне, что я не хочу. Я хочу, чтобы он сообщал мне только о потере / отсутствии сети.

Я считаю, что это как-то связано с вызовом:

- (void)viewWillAppear:(BOOL)animated
{
    // check for internet connection
    [[NSNotificationCenter defaultCenter]
          addObserver:self
             selector:@selector(checkNetworkStatus:)
                 name:kReachabilityChangedNotification
               object:nil];

    internetReachable = [[Reachability
                         reachabilityForInternetConnection] retain];
    [internetReachable startNotifier];

    // check if a pathway to a random host exists
    hostReachable = [[Reachability reachabilityWithHostName:
                     @"www.google.ca"] retain];
    [hostReachable startNotifier];

    // now patiently wait for the notification
}

при вызове - [NSNotificationCenter addObserver: selector: name: object:] , имеет ли имя какую-либо другую функцию, кроме как буквального имени? Я впервые использую NSNotificationCenter, поэтому я плохо разбираюсь в этом вопросе.

РЕДАКТИРОВАТЬ:

Вот моя функция checkNetworkStatus: (Проблема в том, что я получаю "NotReachable" когда сетевое соединение восстанавливается и NSAlert отключается несколько раз)

- (void) checkNetworkStatus:(NSNotification *)notice
{
        // called after network status changes
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
switch (internetStatus)

{
    case NotReachable:
    {
        UIAlertView * alert  = [[UIAlertView alloc] initWithTitle:@"Network Failed" message:@"Please check your connection and try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil ];
        [alert show];
        NSLog(@"The internet is down.");

        break;

    }
    case ReachableViaWiFi:
    {               
        NSLog(@"The internet is working via WIFI.");

        break;

    }
    case ReachableViaWWAN:
    {
        NSLog(@"The internet is working via WWAN.");

        break;

    }
}

NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
switch (hostStatus)

{
    case NotReachable:
    {
        NSLog(@"A gateway to the host server is down.");

        break;

    }
    case ReachableViaWiFi:
    {
        NSLog(@"A gateway to the host server is working via WIFI.");

        break;

    }
    case ReachableViaWWAN:
    {
        NSLog(@"A gateway to the host server is working via WWAN.");

        break;

    }
}

}

10
задан Arun_ 31 December 2013 в 11:53
поделиться