iOS开发探索-监测网络连接状态

监测网络连接状态的必要性:
  1. iOS平台是按照一直有网络连接的思路来设计的,开发者利用这一特点创造了很多优秀的第三方应用。大多数的iOS应用都需要联网,甚至有些应用严重依赖网络,没有网络就无法正常工作。
  2. 在你的应用尝试通过网络获取数据之前,你需要知道当前设备是否知道连接上了网络,甚至有时候你可能还需要知道当前网路是由wifi还是由移动蜂窝网络提供的。
  3. “在网络访问失败的时候,应用没有做出适当的提示”是苹果的iOS审核团队拒绝一个应用的常见理由。苹果要求你必须先检测网络连接状态,当网络不可用的时候以某种方式告知用户,或者用其他优雅的方式进行处理。
下面介绍两种方法监测网络状态:

1.Reachability

使用之前请从Apple网站下载示例:点此下载
(1)将Reachability.h 和 Reachability.m 源码导入项目中
(2)添加框架SystemConfiguration.framework
(3)导入#import "Reachability.h"头文件

+ (BOOL)isExistenceNetwork
{ 
       BOOL isExistenceNetwork;
       Reachability *reachability = [Reachability reachabilityWithHostName:@"www.apple.com"]; 
       switch([reachability currentReachabilityStatus]){          
       case NotReachable: isExistenceNetwork = FALSE;    
            break;
       case ReachableViaWWAN: isExistenceNetwork = TRUE; 
            break; 
       case ReachableViaWiFi: isExistenceNetwork = TRUE;
            break; 
       } 
    return isExistenceNetwork;
}

2.AFNetworking中AFNetworkReachabilityManager监测网络状态

- (void)reachability
{
    // 1.获得网络监控的管理者
    AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager]
    // 2.设置网络状态改变后的处理
    [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    // 当网络状态改变了, 就会调用这个block
     switch (status) {
        case AFNetworkReachabilityStatusUnknown: // 未知网络
            NSLog(@"未知网络");
            break;
        case AFNetworkReachabilityStatusNotReachable: // 没有网络(断网)
            NSLog(@"没有网络(断网)");
            break;
        case AFNetworkReachabilityStatusReachableViaWWAN: // 手机自带网络
            NSLog(@"手机自带网络");
            break;
        case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI
            NSLog(@"WIFI");
            break;
        }
    }];
    // 3.开始监控
    [mgr startMonitoring];
}
在此感谢各位读者的来访,您的关注是我写作分享的最大动力。

你可能感兴趣的:(iOS开发探索-监测网络连接状态)