iOS开发 -------- 网络状态监测
一 示例代码
需要先把第三方Reachability下载导入到工程中 下载网址 https://github.com/tonymillion/Reachability
1 封装网络工具类 NetworkTool
//
// NetworkTool.h
// 网络状态检测
//
// Created by lovestarfish on 15/11/7.
// Copyright © 2015年 S&G. All rights reserved.
// #import <Foundation/Foundation.h> @interface NetworkTool : NSObject /**
* 是否WIFI
*/
+ (BOOL)IsEnableWIFI; /**
* 是否3G
*/
+ (BOOL)IsEnable3G; @end
//
// NetworkTool.m
// 网络状态检测
//
// Created by lovestarfish on 15/11/7.
// Copyright © 2015年 S&G. All rights reserved.
// #import "NetworkTool.h"
#import "Reachability.h" @implementation NetworkTool
//是否WIFI
+ (BOOL)IsEnableWIFI {
return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);
} //是否3G
+ (BOOL)IsEnable3G {
return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);
} @end
2 在viewController类中导入我们封装好的网络工具类
//
// RootViewController.m
// 网络状态检测
//
// Created by lovestarfish on 15/11/7.
// Copyright © 2015年 S&G. All rights reserved.
// #import "RootViewController.h"
#import "Reachability.h"
#import "NetworkTool.h" @interface RootViewController () @property (nonatomic,strong) Reachability *reachability; @end @implementation RootViewController - (void)viewDidLoad {
[super viewDidLoad]; //监听网络状态发生改变的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChanged) name:kReachabilityChangedNotification object:nil]; //获得Reachability对象
self.reachability = [Reachability reachabilityForInternetConnection]; //开始监控网络
[self.reachability startNotifier];
} /**
* 网络状态发生改变时
*/
- (void)networkStateChanged {
[self checkNetworkState];
} /**
* 检测当前网络状态
*/
- (void)checkNetworkState {
if ([NetworkTool IsEnable3G]) {
[self presentAlertController:@"已经连接WIFI"];
NSLog(@"WIFi环境");
} else if ([NetworkTool IsEnable3G] ) {
[self presentAlertController:@"当前为手机自带网络"];
NSLog(@"手机自带网络");
} else {
[self presentAlertController:@"网络不可用"];
NSLog(@"没有网络");
}
} /**
* 网络发生变化时以弹出框消息提示用户
*/
- (void)presentAlertController:(NSString *)message {
UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"提示" message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }];
[alertC addAction:action];
[self presentViewController:alertC animated:YES completion:nil];
} /**
* 在合适的时机移除通知
*/
- (void)dealloc {
[self.reachability stopNotifier];
[[NSNotificationCenter defaultCenter] removeObserver:self];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
} @end
二 实现效果
iOS开发 -------- 网络状态监测的更多相关文章
- iOS开发网络篇—监测网络状态(转)
文章转载自:http://www.cnblogs.com/wendingding/p/3950114.html iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时 ...
- iOS开发网络篇—监测网络状态
iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...
- iOS 开发网络篇—监测网络状态
iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...
- iOS开发网络篇—简单介绍ASI框架的使用
iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...
- iOS开发网络篇—HTTP协议
iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...
- 02.iOS开发网络篇—HTTP协议
iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...
- iOS开发网络篇—网络请求(HTTP协议)小结
iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...
- iOS开发网络篇—数据缓存
iOS开发网络篇—数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造 ...
- iOS开发网络篇—大文件的多线程断点下载
http://www.cnblogs.com/wendingding/p/3947550.html iOS开发网络篇—多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时 ...
随机推荐
- PHP删除数组中空值的方法
- Oracle 创建表 Create Table...
一.创建表 主键约束primary key 约束条件,唯一且非空,一个表中只能有一个主键:有多个字段联合作为主键时,合在一起唯一标识记录,叫做联合主键. 外键约束 foreign key 受另外一张表 ...
- Linux上配置http上网代理
有些局域网环境上网需要使用代理上网,图形界面的很好解决就设置一下浏览器的代理就好了,但是Linux纯命令行的界面就需要手动配置了. 如果要全局用户使用应用于所有的Shell,就需要修改 /etc/pr ...
- 解决mapper绑定异常:nested exception is org.apache.ibatis.binding.BindingException:
原因: 此异常的原因是由于mapper接口编译后在同一个目录下没有找到mapper映射文件而出现的.由于maven工程在默认情况下src/main/java目录下的mapper文件是不发布到targe ...
- JavaScript基础知识(DOM)
获取元素的方法 要操作谁,就要先获取谁: 获取元素 1.document.getElementById:通过ID名来获取元素 兼容性: 在IE8以下,会默认把name属性当做id来获取: docume ...
- java线程和多线程同步
java的线程之间资源共享,所以会出现线程同步问题(即,线程安全) 一.线程创建: 方式①:extends java.lang.Thread,重写run(),run方法里是开启线程后要做的事..sta ...
- ng2-tree
[转]https://github.com/valor-software/ng2-tree#eyes-demo demo:http://valor-software.com/ng2-tree/
- 与HTTP关系密切的三个协议:IP,TCP,DNS
IP(网际协议): 位于网络层 通常易混淆的是“IP”和“IP地址”,单独讲“IP”是指一种协议名称 IP协议的作用是将各种数据包传送给对方.而要保证确实传送到对方那里,则需要满足各类条件. 其中两个 ...
- 在centos7下安装python3的步骤
环境搭建 准备工具: centos7:http://mirror.bit.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso virtus ...
- IDEA为了使用方便,需要改的几条配置
自动编译开关 在Eclipse中自动编译开关是开着的,如下所示那么,在IDEA中,务必要手动将其打开,非常重要! 忽略大小写开关 IDEA默认是匹配大小写,此开关如果未关.你输入字符一定要符合大小写. ...