检测网路状态 Reachability

//检查网络状态
//检查设备的网络状态需要以下两个步骤,首先下载添加Reachability类(可以通过官方文档下载,里面有demo,也可通过pod集成)
//然后为项目添加SystemConfiguration.framework库

//然后下方程序。。。。
#import "ViewController.h"
#import "Reachability.h"
@interface ViewController ()
@property (strong, nonatomic) IBOutlet UITextField *siteField;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
}

//这个方法只可判断我们访问的固定的站点的访问状态,如果站点是不能访问的,那么也只能回不能访问,所以我们不知道是设备没有网还是怎么回事儿
//stroy中的测试按钮
- (IBAction)testNetStatus:(id)sender {
    NSString *site = self.siteField.text;
    //创建访问指定站点的Reachability
    Reachability *reachable = [Reachability reachabilityWithHostName:site];
    switch ([reachable currentReachabilityStatus]) {
        case NotReachable:
            NSLog(@"不能访问该网");
            break;
        case ReachableViaWiFi:
            NSLog(@"使用WIFI网络");
            break;
        case ReachableViaWWAN:
            NSLog(@"使用3G4G网络");
            break;
        default:
            break;
    }
}
//下方两个方法可以判断设备的WIFI或者3G/4G是否连接
- (IBAction)testWIFI:(id)sender {
    if ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable ) {
        NSLog(@"wifi网络已连接");
    }else
    {
        NSLog(@"wifi网络连接");
    }

}
- (IBAction)test3G4G:(id)sender {
    if ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable) {
        NSLog(@"3G/4G网络已连接");
    }else
    {
        NSLog(@"3G/4G网络没连接");
    }
}


@end

检测网路状态 Reachability_第1张图片检测网路状态 Reachability_第2张图片


#import "AppDelegate.h"
#import "Reachability.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

//有时我们需要监听网络的变化状态。下方就是可以检测的。。。程序获取Reachability对象之后,调用Reachability的startNotifier方法即可开启该对象的被监听状态--当Reachability的连接状态发生变化时,该对象将会发送一个kReachabilityChangedNotification通知给默认的通知方法。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];

    Reachability *reach = [Reachability reachabilityWithHostName:@"www.baidu.com"];
    [reach startNotifier];
    
    return YES;
}
-(void)reachabilityChanged:(NSNotification *)note
{
    Reachability *curreach = [note object];
    NetworkStatus status = [curreach currentReachabilityStatus];
    if (status == NotReachable) {
        NSLog(@"不能访问该网站");
    }
}
@end



AFNetworking(检测网络连接)

概述

网络 — 你的程序离开了它就不能生存下去!苹果的Foundation framework中的NSURLConnection又非常难以理解,不过这里有一个可以使用的替代品:AFNetworking。

使用

网络连接单例

AFNetworkReachabilityManager *reachabilityManager = [AFNetworkReachabilityManager sharedManager];

打开检测

[reachabilityManager startMonitoring];

检测网络连接的代码块回调

[reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { if (status == AFNetworkReachabilityStatusNotReachable) { //网络无连接的提示 } }];

网络连接状态

typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
    AFNetworkReachabilityStatusUnknown          = -1, //未知
    AFNetworkReachabilityStatusNotReachable     = 0,  //无连接
    AFNetworkReachabilityStatusReachableViaWWAN = 1,  //3G
    AFNetworkReachabilityStatusReachableViaWiFi = 2,  //WIFI
};


你可能感兴趣的:(Reachability,网络检测,网络变化)