2016-11-20 98 views

回答

2

我已經使用AFNetworking,並發現它是最容易使用這個(監聽適配器的變化)

#import <AFNetworking/AFNetworkReachabilityManager.h> 

- (instancetype)init 
{ 
    self = [super init]; 
    if(self) 
    { 
     [[AFNetworkReachabilityManager sharedManager] startMonitoring]; 
     [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(reachabilityChanged:) 
               name:AFNetworkingReachabilityDidChangeNotification 
               object:nil]; 
    } 
    return self; 
} 


-(void) dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self 
                name:AFNetworkingReachabilityDidChangeNotification 
               object:nil]; 
} 

,然後實現處理程序:

- (void)reachabilityChanged:(NSNotification *)notification 
{ 
    NSNumber *s = notification.userInfo[AFNetworkingReachabilityNotificationStatusItem]; 
    AFNetworkReachabilityStatus status = [s integerValue]; 

    //Check value of status here 
} 

這裏是頭在那裏你可以看到用於狀態的常量: https://github.com/AFNetworking/AFNetworking/blob/4fb051898c60051d207ca0c24435766fdf140e34/AFNetworking/AFNetworkReachabilityManager.h

我也用過SCReachability

#import <SystemConfiguration/SystemConfiguration.h> 

    BOOL networkAvailable = NO; 
    const char *hostName = [NEVER_TRANSLATE(@"google.com") cStringUsingEncoding:NSASCIIStringEncoding]; 
    SCNetworkReachabilityFlags flags = 0; 
    SCNetworkReachabilityRef target = SCNetworkReachabilityCreateWithName(NULL, hostName); 

    if (SCNetworkReachabilityGetFlags(target, &flags)) 
    { 
     if (flags == kSCNetworkFlagsReachable) 
     { 
     networkAvailable = YES; 
     } 
    } 

雖然我用這個在特定的時間來檢測,而不是註冊爲一個監聽網絡的可用性,所以不知道這是否會做你想做

+0

什麼這正是我一直在尋找,謝謝您! –