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开发网络篇—多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时 ...
随机推荐
- 接口配置信息修改 请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证
// 1)将token.timestamp.nonce三个参数进行字典序排序 // 2)将三个参数字符串拼接成一个字符串进行sha1加密 // 3)开发者获得加密后的字符串可与signature对比, ...
- 浏览器(或客户端)触发,后台运行php脚本
既我从浏览器这端触发服务器上的php脚本,要想让服务器端的php脚本一直执行,我得把该网页一直开着,这样就达不到我不开电脑不开网页进行爬取的目的,因此查找了些资料,得知 ignore_user_abo ...
- 查看linux系统的运行级别
查看当前系统的运行级别[root@apenglinux ~]# runlevel3 5查看系统的默认级别[root@apenglinux ~]# systemctl get-defaultgraphi ...
- pandas读取文件报错
path = 'D:/Postgraduate/Python/Machine Learning/小象学院机器学习/08.回归实践/8.Regression代码/8.Regression/8.Adver ...
- Linux 下挂载新硬盘方法
Linux的硬盘识别: 一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 2.启动服务器,以r ...
- HTML、CSS知识点,面试开发都会需要--No.2 CSS
No.2 CSS 1.选择器类型 选择器类型包括:type.class.id. 2.引用外部css文件 使用link元素,添加rel和href属性:<link rel="styles ...
- virtualenv与virtualenvwrapper虚拟环境
python开发之virtualenv与virtualenvwrapper讲解 在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物 ...
- Apktool反编译apk资源文件
Android开发过程中,如何查看已经打包的APK内部xml呢,google下找到了apktool这个工具, apktool项目现在已经迁移到了github:apktool 目前最新版本2.2.2,如 ...
- 图像分类(一)GoogLenet Inception_V1:Going deeper with convolutions
论文地址 在该论文中作者提出了一种被称为Inception Network的深度卷积神经网络,它由若干个Inception modules堆叠而成.Inception的主要特点是它能提高网络中计算资源 ...
- Date Calendar
1 毫秒值概念 时间和日期的计算,必须依赖毫秒值获取当前日期的毫秒值:System.currentTimeMillis() 返回值long类型参数, 时间原点:公元1970年1月1日,午夜0:00:0 ...