2011-04-14 8 views
2

나는 내 웹 사이트에 현재 연결 상태 및 응용 프로그램 시작시 네트워크 상태를 확인합니다내 경고가 두 번 표시되는 이유는 무엇입니까? 내 응용 프로그램에서

나는 웹 사이트에 대한 연결을 설정할 수없는 경우 경고를 표시 할 내 updateInterfaceWithReachability에서
[[NSNotificationCenter defaultCenter] addObserver:self 
     selector:@selector(reachabilityChanged:) 
     name:kReachabilityChangedNotification object:nil]; 

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

hostReach = [[Reachability reachabilityWithHostName:@"www.google.de"] 
       retain]; 
[hostReach startNotifier]; 

[self updateInterfaceWithReachability:internetReach]; 
[self updateInterfaceWithReachability:hostReach]; 

//.... 

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

.

내 문제는 경고가 두 번 표시되는, 그래서 첫 번째는 다가와서 내가 그에게 초를 해고 할 때 표시됩니다

if(curReach == hostReach){ 
     NetworkStatus netStatus = [curReach currentReachabilityStatus]; 

     if(netStatus != NotReachable){ 
      statusLabel.text = @"connected"; 
      [self setStatusColorGreen]; 
     }else{ 
      if(![internetReach connectionRequired]){ 
       statusLabel.text = @"not connected"; 
       compose.enabled = NO; 
       [self doSMSFAlert]; 
       [self setStatusColorRed]; 
      } 
     } 
    } 

어떤 아이디어?

편집 : 경고 호스트가 있다는 것을 알았지 만 경고해서는 안됩니다. 그러나 상태가 '연결됨'입니다.

답변

3

두 개의 도달 가능성 알림을 수행 중이므로 귀하의 첫 번째는 일반적으로 인터넷을위한 것입니다. 두 번째는 특정 호스트를위한 것입니다. Reachability 만 호스트하면 어떨까요? 그렇게하면 경고를 하나만 받게됩니다.

+0

위 코드에서 두 개의 ivars가 나타납니다. 하나는'internetReach와'hostReach'입니다. 나는 네가 둘 다 필요 없다고 말하고있다. –

+0

internetReach 항목을 제거 했으므로 경고가 표시되지만 상태가 연결되어 코드가 두 번 실행되고 처음 실행하면 연결되지 않았다는 경고가 표시되고 두 번째 경고는 연결됨 .... 이상합니다. 어쩌면 이것은 asynchrouns이고 두 번째 실행은 응답이 있으며 첫 번째 실행이 요청되었음을 나타냅니다. –

+0

Reachability 코딩을 완료하지 않았으므로 내 앱에 인터넷이 필요하지 않습니다. Reachability 코드를 검색하고 연결되었을 때 표시되는 경고를 제거해야합니다. –

1

알림 이벤트에 응답하고 있습니다. 이벤트는 상태가 변경 될 때까지 여러 번 전달 될 수 있으며 이미 응답했거나 유사한 상태 변경에 응답하는 것은 사용자가 결정할 수 있습니다. 일부 옵션은 부울을 저장하거나 다른보기를 표시하기 전에보기가 현재 경고 상태인지 확인합니다.

관련 문제