标签:
随着移动网络升级:2G->3G->4G甚至相传正在研发的5G,网络速度是越来越快,但这流量也像流水一般哗哗的溜走。
网上不是流传一个段子: 睡觉忘记关流量,第二天房子就归移动了!
这固然是一种夸张的说法,但是作为一个优秀的App开发人员,我们需要在App中给出最恰当的提示。
在需要花费大量流量的时候(例如:视频,下载等)给出一些提示。
在用户视频期间用户切换网络的时候给出是否继续观看的提示!
下面笔者就给出一种可以实时监控网络状态改变的方法!
笔者使用的是网络流传最广的网络监控类:Reachability
点击此处下载本文Demo:点击下载
将上部所下载的文件解压,将NetworkReachability文件夹加入你需要添加的工程之中。
示例说明:此示例用于演示关于如何使用SystemConfiguratio Reachalility程序接口来判定相关的网络连接状态及状态 变 化,所以在使用此示例中的Reachability.(h/m)文件于自有的项目中的前提是必须引入 SystemConfiguration.framework。
一:Reachability的使用方法
|
|
1 - (void)viewDidLoad
2 {
3 [super viewDidLoad];
4
5 // 监听网络状态发生改变的通知
6 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
7
8 // 获得Reachability对象
9 self.reachability = [Reachability reachabilityForInternetConnection];
10 // 开始监控网络
11 [self.reachability startNotifier];
12
13 // // 1.获得Reachability对象
14 // Reachability *wifi = [Reachability reachabilityForLocalWiFi];
15 //
16 // // 2.获得Reachability对象的当前网络状态
17 // NetworkStatus wifiStatus = wifi.currentReachabilityStatus;
18 // if (wifiStatus != NotReachable) {
19 // NSLog(@"是WIFI");
20 // }
21 }
22
23 - (void)dealloc
24 {
25 [self.reachability stopNotifier];
26 [[NSNotificationCenter defaultCenter] removeObserver:self];
27 }
28
29 - (void)networkStateChange
30 {
31 NSLog(@"网络状态改变了");
32 [self checkNetworkState];
33 }
34
35 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
36 {
37 [self checkNetworkState];
38 }
39
40 /**
41 * 监测网络状态
42 */
43 - (void)checkNetworkState
44 {
45 if ([iCocosNetworkTool isEnableWIFI]) {
46 NSLog(@"WIFI环境");
47 } else if ([iCocosNetworkTool isEnable3G]) {
48 NSLog(@"手机自带网络");
49 } else {
50 NSLog(@"没有网络");
51 }
52 }
判断
1 // 是否WIFI
2 + (BOOL)isEnableWIFI {
3 return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);
4 }
5
6 // 是否3G
7 + (BOOL)isEnable3G {
8 return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);
9 }
二:AFN的使用方法:(AFN实际上也是使用了系统自到的Reachability来实现的)
1 - (void)viewDidLoad
2 {
3 [super viewDidLoad];
4
5 // Do any additional setup after loading the view, typically from a nib.
6
7 AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
8 [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
9 // 当网络状态发生改变的时候调用这个block
10 switch (status) {
11 case AFNetworkReachabilityStatusReachableViaWiFi:
12 NSLog(@"WIFI");
13 break;
14
15 case AFNetworkReachabilityStatusReachableViaWWAN:
16 NSLog(@"自带网络");
17 break;
18
19 case AFNetworkReachabilityStatusNotReachable:
20 NSLog(@"没有网络");
21 break;
22
23 case AFNetworkReachabilityStatusUnknown:
24 NSLog(@"未知网络");
25 break;
26 default:
27 break;
28 }
29 }];
30 // 开始监控
31 [mgr startMonitoring];
32
33 // [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] = !NotReachable
34 // [[Reachability reachabilityForInternetConnection] currentReachabilityStatus] = !NotReachable;
35
36 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reacgabilityChange:) name:kReachabilityChangedNotification object:nil];
37
38 }
39
40 - (void)dealloc
41 {
42 [[AFNetworkReachabilityManager sharedManager] stopMonitoring];
43 }
标签:
原文地址:http://www.cnblogs.com/stronger-ios-lcx/p/5653805.html