iOS网络-06-监听Iphone的网络状态
使用系统的方法来监听网络状态
- 系统的方法是通过通知机制来实现网络状态的监听
- 实现网络状态监听的步骤
定义Reachability类型的成员变量来保存网络的状态
@property (nonatomic, strong) Reachability *reachability;
注册为通知中心的的观察者
// 在通知中心注册观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
/**
* getNetworkStatus:监听到通知的回调方法
* kReachabilityChangedNotification:通知的类型,即网络状态发生改变时,触发通知
* object:传递给getNetworkStatus回调方法的参数
*/
// 获取并保存网络状态
self.reachability = [Reachability reachabilityForInternetConnection];
// 开始监听
[self.reachability startNotifier];
在监听到通知的触发方法中判断网络的状态
- (void)getNetworkStatus
{
if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable)
{
NSLog(@"是WIFI");
}
else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable)
{
NSLog(@"是手机自带网络");
}
else
{
NSLog(@"网络有问题");
}
}
将观察者从通知中心移除,停止监听,清空网络监听对象
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self.reachability stopNotifier];
self.reachability = nil;
}
使用AFNetworking监听网络状态
- 通过AFN监听网络状态比较简单
- 实现网络状态监听的
获取AFNetworkReachabilityManager的实例
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
设置manager在网络发生变化的时回调的Block
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"----当前网络状态---%zd", status);
}];
/**
* status:表示当前网络的状态,是个枚举类型变量,具有以下取值
* AFNetworkReachabilityStatusUnknown = -1
* AFNetworkReachabilityStatusNotReachable = 0
* AFNetworkReachabilityStatusReachableViaWWAN = 1
* AFNetworkReachabilityStatusReachableViaWiFi = 2
*/
开始监听
[manager startMonitoring];
iOS网络-06-监听Iphone的网络状态的更多相关文章
- OC - 18.监听iPhone的网络状态
使用系统的方法来监听网络状态 系统的方法是通过通知机制来实现网络状态的监听 实现网络状态监听的步骤 定义Reachability类型的成员变量来保存网络的状态 @property (nonatomic ...
- iOS 使用AFNetWorking监听APP网络状态变化(可用于更改缓存策略、提示网络等)
前言 我们知道在APP开发过程中.监听手机当前的网络状态还是一个非经常常使用的方法,这里我来为大家接受一种使用AFNetWorking来监听当前的网络状态的方法:网络监听对程序开发的帮助有非常多:比方 ...
- Python黑客编程基础3网络数据监听和过滤
网络数据监听和过滤 课程的实验环境如下: • 操作系统:kali Linux 2.0 • 编程工具:Wing IDE • Python版本:2.7.9 • 涉及 ...
- linux配置oracle11G监听及本地网络服务 及 数据库建库
配置监听及本地网络服务 在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面. 数据库建库 在oracle用户的图形界面oracle用户中,新开启一个终端 ...
- Oracle Net Configuration(监听程序和网络服务配置)
1.在Oracle服务端和客户端都安装完之后,就需要配置监听程序和本地网络服务,以便外部程序和工具的访问,所以Oracle提供了两款自带的工具来配置它们分别是 Net Configuration.Ne ...
- 监听Listview的滚动状态,是否滚动到了顶部或底部
/** * @author:Jack Tony * @description : 监听listview的滑动状态,如果到了顶部就刷新数据 * @date :2015年2月9日 */ private c ...
- iOS 实时监听app的网络连接状态
实际iOS开发中,在网络通信中我们大部分使用第三方(只谈短链),譬如 AFNetworking.ASIHttpRequest(这个停更了,想必现在没多少人用),swift的 Alamofire 等. ...
- Android 网络流量监听开源项目-ConnectionClass源码分析
很多App要做到极致的话,对网络状态的监听是很有必要的,比如在网络差的时候加载质量一般的小图,缩略图,在网络好的时候,加载高清大图,脸书的android 客户端就是这么做的, 当然伟大的脸书也把这部分 ...
- 1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(来看一下怎么样监听网络数据,监听电脑上位机软件的数据)
首先安装网络监听软件 运行这个软件 这个软件安装到电脑上,默认是监听咱电脑上的网络通信 咱们先监听电脑的软件的网络通信数据,然后再说怎么监听Wi-Fi和APP的软件的网络通信数据 咱就监听咱基础篇的 ...
随机推荐
- 【网站开发】在新浪SAE上搭建一个博客
概述 在新浪SAE上搭建一个博客 1.访问新浪SAE站点 http://sae.sina.com.cn/ 2.注册新浪SAE 3.选择应用仓库 4.选择WordPress 5.安装WordPress ...
- NativeScript工作原理
NativeScript是一个runtime,它提供一些机制可以使用JavaScript构建原生的IOS.Android甚至WP(未来会加入)应用.NativeScript有很多非常酷的功能,比如MV ...
- lettuce webdriver 自动化测试---玩转BDD
行为驱动开发(BDD),依然高大上的矗立在远方,很少被人问津,一方面是BDD的思想不太容易理解,别一方面BDD的资料并不多.中文的资料就更少了. 之前增写过一篇<python BDD 框架之le ...
- UINavigationItem和UItabBarItem的区别详解
一.UINavigationItem 1> 获得方式 self.navigationItem // self是指控制器 2> 作用 可以用来设置当前控制器顶部导航栏的内容 // 设置导航栏 ...
- Mysql大量插入随机数据方法--存储过程
创建测试表: mysql)); 创建存储过程: mysql> delimiter // mysql> create procedure rand_data(in num int) -> ...
- Sql Server来龙去脉系列 必须知道的权限控制基础篇
题外话:最近看到各种吐槽.NET怎么落寞..NET怎么不行了..NET工资低的帖子.我也吐槽一句:一个程序猿的自身价值不是由他选择了哪一门技术来决定,而是由他自身能创造出什么价值来决定. 在进入本篇内 ...
- Sql Server来龙去脉系列之四 数据库和文件
在讨论数据库之前我们先要明白一个问题:什么是数据库? 数据库是若干对象的集合,这些对象用来控制和维护数据.一个经典的数据库实例仅仅包含少量的数据库,但用户一般也不会在一个实例上创建太多 ...
- 可编译为 UNICODE 和 ANSI 版本的遍历目录树程序_0.1
路径暂时是写死的 编译两个版本的程序: g++ treeT.cpp -municode -D_UNICODE -o treeT_UNIg++ treeT.cpp -o treeT_ASC 为了观察 ...
- 数组(Array)的使用方法
本文内容: 1.概述 2.数组基础 3.结合for循环与arr.length,在数组尾部插入数值 4.利用'concat','join'实 ...
- C# 通过自定义特性 实现根据实体类自动创建数据库表
.Net新手通常容易把属性(Property)跟特性(Attribute)搞混,其实这是两种不同的东西 属性指的类中封装的数据字段:而特性是对类.字段.方法和属性等元素标注的声明性信息 如下代码(Id ...