2012-09-08 166 views
0

我用我的應用程序檢查我的網絡連接reacheability類...檢查網絡可用性

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

我需要找到當網絡狀態改變時(即從到達的網絡狀態更改爲notreachable和副反之亦然)。

有沒有代表找到這個想法,有什麼建議嗎?

回答

0

使用該標誌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]; 
     } 
    } 
} 
1

我建議使用Apple的Reachability類。 Here是Apple的示例應用程序。

並檢查此鏈接。

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

+0

以及感謝.....但漢王我的應用程序可以跟蹤網絡狀態的變化? – Icoder

+0

在應用程序委託中添加計時器並調用網絡連接方法。像這樣http://stackoverflow.com/questions/4538168/how-to-check-internet-status-in-iphone –

+0

那麼我試過,bt我覺得它會阻止我的應用程序中的其他線程.... – Icoder

-1

使用可達性」

在應用程序委託添加氾濫方法,這樣就可以在項目

#import "Reachability.h" 
-(BOOL)isHostAvailable 
{ 
    //return NO; // force for offline testing 
    Reachability *hostReach = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus netStatus = [hostReach currentReachabilityStatus]; 
    return !(netStatus == NotReachable); 
} 
+0

嗯謝謝你的答案.....但是我的應用程序可以跟蹤更改在網絡狀態? – Icoder