IOS--网络监测
2015-08-25 20:01
656 查看
大部分的应用都与网络有关 如果你没有网络监测 来监测是否连接网络 很容易让背锅
用法也特别的简单 按照我下面的 二部曲 包你轻松过
1.第一部曲—导入
Reachability类:
这个类用于检测当前网络状态,它不是SDK的一部分,可以在iOS Developer Library里找到这份代码。
从苹果网站上下载Reachability.zip文件,解压之。 (1)把Reachability.h和Reachability.m文件拖到项目中。
(2)添加框架:SystemConfiguration.framework。
( 3 ) 运行环境非 ARC 需要修改 “-fno-objc-arc” (复制就行)
2.第二部曲 –使用方法
1>静态
网络环境现在分三种
①WIFI
②2G/3G/4G
③无网络
所以 Reachability 监测也是分三种
①WIFI reachabilityForLocalWiFi
②2G/3G/4G reachabilityForInternetConnection
③无网络 NotReachable
2>实时
实时的监控几行代码就可以了
原理就是用通知 调用它自身一个网络状态变化的信息方法
就上面这两部就够了
静态和实时 我肯定是推荐实时的
你可以写在 APPDelegate 里面 也可以写在任何地方 但是注意 如果写在 app 里面 dealloc 似乎是不需要写的 请自行测试
用法也特别的简单 按照我下面的 二部曲 包你轻松过
1.第一部曲—导入
Reachability类:
这个类用于检测当前网络状态,它不是SDK的一部分,可以在iOS Developer Library里找到这份代码。
从苹果网站上下载Reachability.zip文件,解压之。 (1)把Reachability.h和Reachability.m文件拖到项目中。
(2)添加框架:SystemConfiguration.framework。
( 3 ) 运行环境非 ARC 需要修改 “-fno-objc-arc” (复制就行)
2.第二部曲 –使用方法
1>静态
网络环境现在分三种
①WIFI
②2G/3G/4G
③无网络
所以 Reachability 监测也是分三种
①WIFI reachabilityForLocalWiFi
②2G/3G/4G reachabilityForInternetConnection
③无网络 NotReachable
- (void)checkNetworkState { // 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>实时
实时的监控几行代码就可以了
原理就是用通知 调用它自身一个网络状态变化的信息方法
- (void)viewDidLoad
{
[super viewDidLoad];
//监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
//发布通知 这个地方的对象必须是全局的对象
self.conn = [Reachability reachabilityForInternetConnection];
//开启通知
[self.conn startNotifier];
}
- (void)dealloc
{
[self.conn stopNotifier];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)networkStateChange
{
[self checkNetworkState];
}
- (void)checkNetworkState { // 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(@"没有网络"); } }
就上面这两部就够了
静态和实时 我肯定是推荐实时的
你可以写在 APPDelegate 里面 也可以写在任何地方 但是注意 如果写在 app 里面 dealloc 似乎是不需要写的 请自行测试
相关文章推荐
- android中使用Http下载文件并保存到本地SD卡
- 【VMCloud云平台】SCVMM进阶篇(一)网络虚拟化(2)
- 真刀真枪压测:基于TCPCopy的仿真压测方案
- Github错误:fatal: Authentication failed for 'https://github.com/ ...
- SolrJ 操作HttpSolrServer, ConcurrentUpdateSolrServer和CloudSolrServer
- HTTP请求报文和HTTP响应报文
- 链接MapReduce作业http://user.qzone.qq.com/1178772762/blog/1440417746
- 如何运用LoadRunner进行http接口测试
- 《HTTP权威指南》阅读笔记(八)
- 检查究竟哪个程序消耗本地mac的网络流量
- 个人--网络管理员和工程师职场生存发展的12大困惑?
- Linux下的网络设备驱动(一)
- android 获取网络状态
- HTTP请求报文和HTTP响应报文
- 通过网络挖掘检测谣言和误信息(2015)
- 《HTTP权威指南》阅读笔记(七)
- allegro如何删除没有网络的走线,查还没有连的网络线
- HTTP协议详解
- Android OkHttp完全解析 是时候来了解OkHttp了
- http 返回码 405 解决方案之一