Проверка доступности сети

Я использую класс достижимости для проверки подключения к сети в моем приложении ...

Reachability *reach = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus netStatus = [reach currentReachabilityStatus];    
    if (netStatus==NotReachable)
    {
        NSLog(@"NR");
    }

Мне нужно найти, когда изменяется статус сети (то есть когда статус сети меняется с достижимости на недоступен и наоборот).

Есть ли какие-либо делегаты, которые думают об этом, какие-либо предложения?


person Icoder    schedule 08.09.2012    source источник


Ответы (3)


Я предлагаю использовать класс Reachability от Apple. Вот пример приложения от Apple.

а также проверьте эти ссылки.

http://www.switchonthecode.com/tutorials/iphone-snippet-detecting-network-status

person Vikas S Singh    schedule 08.09.2012
comment
Что ж, спасибо за твой ответ ..... Но как мое приложение может отслеживать изменения в статусе сети ?? - person Icoder; 08.09.2012
comment
добавить таймер в делегат приложений и вызвать метод сетевых подключений. как это stackoverflow.com/questions / 4538168 / - person Vikas S Singh; 08.09.2012
comment
Используйте NSNotificationCenter и попробуйте вызвать метод сетевых подключений в представлении контроллера представления. - person Vikas S Singh; 08.09.2012
comment
Также проверил эту ссылку stackoverflow.com/questions/339089/ stackoverflow.com/questions/5198716/ может вам помочь - person Vikas S Singh; 08.09.2012

Использовал этот флаг kReachabilityChangedNotification для обнаружения изменения статуса сети и передал его NSNotificationCenter

Вот код:

NSString *host = @"https://www.apple.com"; // Put your host here

        // Set up host reach property
       hostReach = [Reachability reachabilityWithHostname:host];

                          // Enable the status notifications
                          [[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
                           [hostReach startNotifier];

   - (void) reachabilityChanged: (NSNotification* )note
{
    Reachability *reachability = [note object];
    NSParameterAssert([reachability isKindOfClass:[Reachability class]]);
    if (reachability == hostReach) {
        Reachability *reach = [Reachability reachabilityForInternetConnection]; 
        NetworkStatus netStatus = [reach currentReachabilityStatus];    
        if (netStatus==NotReachable)
        {
            NSLog(@"notreacheable");
        }
        else {
            NSLog(@"reacheable");
            [[NSNotificationCenter defaultCenter]postNotificationName:@"startUpdatingTable" object:nil];
        }
    }
}
person Icoder    schedule 25.09.2012

используйте класс Reachability "

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

#import "Reachability.h"
-(BOOL)isHostAvailable
{
    //return NO; // force for offline testing
    Reachability *hostReach = [Reachability reachabilityForInternetConnection];
    NetworkStatus netStatus = [hostReach currentReachabilityStatus];
    return !(netStatus == NotReachable);
}
person freelancer    schedule 08.09.2012
comment
Что ж, спасибо за твой ответ ..... Но как мое приложение может отслеживать изменения в статусе сети ?? - person Icoder; 08.09.2012