ios之網絡監聽


  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
  4.       
  5.     //開啟網絡狀況的監聽   
  6.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];  
  7.       
  8.     self.hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"] ;  
  9.     [self.hostReach startNotifier];  //開始監聽,會啟動一個run loop   
  10.   
  11.     self.window.rootViewController = self.tabBarController;  
  12.     [self.window makeKeyAndVisible];  
  13.     return YES;  
  14. }  
  15.   
  16. //網絡鏈接改變時會調用的方法   
  17. -(void)reachabilityChanged:(NSNotification *)note  
  18. {  
  19.     Reachability *currReach = [note object];  
  20.     NSParameterAssert([currReach isKindOfClass:[Reachability class]]);  
  21.       
  22.     //對連接改變做出響應處理動作   
  23.     NetworkStatus status = [currReach currentReachabilityStatus];  
  24.     //如果沒有連接到網絡就彈出提醒實況   
  25.     self.isReachable = YES;  
  26.     if(status == NotReachable)  
  27.     {  
  28.         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"網絡連接異常" message:@"暫無法訪問書城信息" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];  
  29.         [alert show];  
  30.         [alert release];  
  31.         self.isReachable = NO;  
  32.     }  
  33.     else  
  34.     {  
  35.         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"網絡連接信息" message:@"網絡連接正常" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];  
  36.         [alert show];  
  37.         [alert release];  
  38.         self.isReachable = YES;  
  39.     }  
  40. }  
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    
    //開啟網絡狀況的監聽
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
    
    self.hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"] ;
    [self.hostReach startNotifier];  //開始監聽,會啟動一個run loop

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

//網絡鏈接改變時會調用的方法
-(void)reachabilityChanged:(NSNotification *)note
{
    Reachability *currReach = [note object];
    NSParameterAssert([currReach isKindOfClass:[Reachability class]]);
    
    //對連接改變做出響應處理動作
    NetworkStatus status = [currReach currentReachabilityStatus];
    //如果沒有連接到網絡就彈出提醒實況
    self.isReachable = YES;
    if(status == NotReachable)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"網絡連接異常" message:@"暫無法訪問書城信息" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];
        [alert show];
        [alert release];
        self.isReachable = NO;
    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"網絡連接信息" message:@"網絡連接正常" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];
        [alert show];
        [alert release];
        self.isReachable = YES;
    }
}


通過如上代碼,在應用程序的任何一個界面都可以使用下面的單例來判斷網絡是否連接

 

 

  1. AppDelegate *appDlg = (AppDelegate *)[[UIApplication sharedApplication] delegate];  
  2. if(appDlg.isReachable)  
  3. {  
  4.     NSLog(@"網絡已連接");//執行網絡正常時的代碼   
  5. }  
  6. else  
  7. {  
  8.     NSLog(@"網絡連接異常");//執行網絡異常時的代碼   
  9. }  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM