iOS开发——网络编程OC篇&(五)网络监控

网络监控

随着移动网络升级: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 }
时间: 2024-10-16 14:35:54

iOS开发——网络编程OC篇&(五)网络监控的相关文章

iOS开发——图形编程OC篇&(一)Quartz 2D介绍

Quartz 2D介绍 一.什么是Quartz2D Quartz 2D是?个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件 二.Quartz2D在iOS开发中的价值 为了便于搭建美观的UI界面,iOS提供了UIKit框架,??有各种各样的UI控件 UILabel:显?文字 UIImageView:显示图片 UIButton:同时显示图片和?字

iOS开发——图形编程OC篇&(五)CALayer创建图层

CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控制器view的layer上) 1 // 2 // YYViewController.m 3 // 01-创建一个简单的图层 4 // 5 // Created by apple on 14-6-21. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 //

iOS开发——图形编程OC篇&(五)Quartz 2D高级使用(一)

Quartz2D高级使用 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextRef ctx=UIGraphicsGetCurrentContext(); 5

iOS开发——动画编程OC篇&(五)动画组

一:组动画简单说明 CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行 属性解析: animations:用来保存一组动画对象的NSArray 默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间 二:分组动画代码示例 代码: 1 #import "YYViewController.h" 2 3 @interface YYViewController (

iOS开发——图形编程OC篇&(六)Quartz 2D高级使用(二)

Quartz 2D高级使用 一.绘图路径 A.简单说明 在画线的时候,方法的内部默认创建一个path.它把路径都放到了path里面去. 1.创建路径  cgmutablepathref 调用该方法相当于创建了一个路径,这个路径用来保存绘图信息. 2.把绘图信息添加到路径里边. 以前的方法是点的位置添加到ctx(图形上下文信息)中,ctx 默认会在内部创建一个path用来保存绘图信息. 在图形上下文中有一块存储空间专门用来存储绘图信息,其实这块空间就是CGMutablePathRef. 3.把路径

iOS开发——图形编程OC篇&(四)Quartz 2D简单使用

Quartz2D简单使用 一.画直线 代码: 1 // 2 // YYlineview.m 3 // 03-画直线 4 // 5 // Created by apple on 14-6-9. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYlineview.h" 10 11 @implementation YYlineview 12 13 14 // 当自定义view第一次显示出来的时候

iOS开发——动画编程OC篇&总结

动画总结 iOS 动画Animation详解, UIView动画(UIView属性动画,UIViewTransition动画,UIView Block动画),CALayer动画(CABasicAnima, CAKeyframeAnimation, CATransition, CAAnimationGroup) 1 iOS 动画Animation详解, UIView动画(UIView属性动画,UIViewTransition动画,UIView Block动画),CALayer动画(CABasicA

iOS开发——图形编程OC篇&OpenGL ES2.0编程步骤

OpenGL ES2.0编程步骤 OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机.PDA和游戏主机等嵌入式设备而设计.该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准. 1. 保存全局变量的数据结构 以下例子程序均基于Linux平台. 1 typedef struct _escontext 2 { 3 void* userData; // P

iOS开发——图形编程OC篇&(一)CALayer介绍与基本使用

CALayer介绍与基本使用 一.简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 @property(nonatomic,readonly,retain) CALayer *layer; 当UIVi

iOS开发——图形编程OC篇&(三)Quartz 2D绘图

绘图 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 决定绘制的输出目标(绘制到什么地方去?)(输出目标可以是PDF文件.Bitmap或者显示器的窗口上) 相同的一套绘图序列,指定不同的Graphics Context,就可将相同的图像绘制到不同的目标上. Quartz2D提供了以下几种类型的Graphics Context: Bitmap Graphics Context PDF Graphics