2013-12-11 4 views
0

Я следующий код в моем классе viewController.m:достижимости и статус в IOS

 - (void) testInternetConnection 
{ 
    internetConnection = [Reachability reachabilityWithHostname:@"www.google.com"]; 

    // Internet is reachable 
    internetConnection.reachableBlock = ^(Reachability*reach) 
    { 
     // Update the UI on the main thread 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      NSLog(@"Yayyy, we have the interwebs!"); 
     }); 
    }; 

    // Internet is not reachable 
    internetConnection.unreachableBlock = ^(Reachability*reach) 
    { 
     // Update the UI on the main thread 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      NSLog(@"Someone broke the internet :("); 
     }); 
    }; 

    [internetConnection startNotifier]; 
} 
  1. Как использовать startNotifier?
  2. Должен ли я помещать это в каждый контроллер вида, в который я хочу протестировать подключение к Интернету?

Я использую это, чтобы проверить статус:

BOOL status = ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable); 

ответ

2

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

Вам не обязательно вводить это в каждый контроллер вида.

1, Вам нужен экземпляр singleton и имеет значение члена, которое используется для сохранения состояния сети.

2, Зарегистрируйте уведомление kReachabilityChangedNotification, обработайте его и получите сетевое состояние и сохраните его в своем членском значении и после уведомления (пользовательский notificaiton), чтобы уведомить других (ваш диспетчер представлений).

3, Предоставьте интерфейсы для получения текущего состояния сети, чтобы ваши контроллеры просмотра узнали о состоянии сети при изменении состояния сети.

0

Попробуйте это в классе делегатов приложения.

напишите этот код в приложении didFinishLaunchingWithOptions.

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; 
Reachability *hostReachable = [[Reachability reachabilityWithHostName: @"www.google.com"] retain]; 
[hostReachable startNotifier]; 

Напишите эти методы в классе Appdelegate.

- (void) reachabilityChanged: (NSNotification*)note 
    { 
    Reachability* curReach = [note object]; 
     [self updateInterfaceWithReachability: curReach]; 
    } 


- (void) updateInterfaceWithReachability: (Reachability*) curReach 
    { 
    if(curReach == hostReachable) 
     { 
      NetworkStatus netStatus = [curReach currentReachabilityStatus]; 
      if (netStatus == 0) 
       { 
       NSLog(@"offline"); 
       } 
      else 
       { 
       NSLog(@"online"); 
       } 
     } 
    } 
Смежные вопросы