美文网首页
两种网络状态判断

两种网络状态判断

作者: yidezhang | 来源:发表于2016-09-21 11:34 被阅读43次

1.Reachability

// 监听网络状态改变的通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];

// 创建Reachability

self.conn = [Reachability reachabilityForInternetConnection];

// 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification)

[self.conn startNotifier];

// 处理网络状态改变

- (void)networkStateChange

{

// 1.检测wifi状态

Reachability *wifi = [Reachability reachabilityForLocalWiFi];

// 2.检测手机是否能上网络(WIFI\3G\2.5G)

Reachability *conn = [Reachability reachabilityForInternetConnection];

// 3.判断网络状态

if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi

NSLog(@"有wifi");

} else if ([conn currentReachabilityStatus] != NotReachable) { // 没有使用wifi, 使用手机自带网络进行上网

NSLog(@"使用手机自带网络进行上网");

} else { // 没有网络

NSLog(@"没有网络");

}

}

2.AFN

// 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];

相关文章

网友评论

      本文标题:两种网络状态判断

      本文链接:https://www.haomeiwen.com/subject/ovkaettx.html