做iOS开发时,我们需要监控/监听网络状况,苹果提供了Reachability.h, Reachability.m。
导入Reachability.h
我们可以在 MainViewController的viewDidLoad方法内部写上:
[self checkReachability];
之后,具体方法如下
#pragma mark
#pragma mark Reachability Methods
#pragma mark
- (void)checkReachability
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
self.reachability = [Reachability reachabilityForInternetConnection];
[self.reachability startNotifier];
[self updateInterfaceWithReachability:self.reachability];
}
/*!
* Called by Reachability whenever status changes.
*/
- (void) reachabilityChanged:(NSNotification *)note
{
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass:[Reachability class]]);
[self updateInterfaceWithReachability:curReach];
}
- (void)updateInterfaceWithReachability:(Reachability *)reachability
{
NetworkStatus status = [reachability currentReachabilityStatus];
AppDelegate *appDelegate = ((AppDelegate *) [[UIApplication sharedApplication] delegate]);
if(status == NotReachable)
{
//No internet
NSLog(@"No Internet");
appDelegate.isNetworkReachable = NO;
[_reachabilityImage setImage:[UIImage imageNamed:@"stop-32.png"]];
}
else if (status == ReachableViaWiFi)
{
//WiFi
NSLog(@"Reachable WIFI");
appDelegate.isNetworkReachable = YES;
[_reachabilityImage setImage:[UIImage imageNamed:@"Airport.png"]];
}
else if (status == ReachableViaWWAN)
{
//3G
NSLog(@"Reachable 3G");
appDelegate.isNetworkReachable = YES;
[_reachabilityImage setImage:[UIImage imageNamed:@"WWAN5.png"]];
}
}