iOS网络-06-监听Iphone的网络状态
2024-08-26 12:19:10
使用系统的方法来监听网络状态
- 系统的方法是通过通知机制来实现网络状态的监听
- 实现网络状态监听的步骤
定义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];
最新文章
- C# DllImport用法和路径问题
- SQL Server调优系列进阶篇(深入剖析统计信息)
- 定时器的应用---查询方式---让8个LED灯,左右各4个来回亮
- iOS 没有安装对应客户端,不应显示对应的图标
- MyCat 学习笔记 第十二篇.数据分片 之 分片事务处理
- 一篇文章教你读懂Makefile
- Hadoop namenode无法启动问题解决
- 【iOS】iOS之Button segue弹出popOver消除(dismiss)问题
- linux下的type命令
- Software Development and Newton&;#39;s Laws of Motion
- Nyoj Fire Station
- twemproxy代理主干流程——剖析twemproxy代码正编
- 初识Redis系列之四:.net使用Redis存储数据
- 菜鸟玩云计算之十五:在Ubuntu上创建和管理Redhat虚拟机
- linux的link命令
- Ng1从1.3开始的变更史
- P1140 相似基因 (dp)
- HBuilderx中编译sass文件
- Zabbix监控nginx性能的另外一种方式
- Observer(__ob__: Observer) 对象添加属性
热门文章
- HTML的学习
- ASP.NET MVC 快速开发框架之 SqlSugar+SyntacticSugar+JQWidgetsSugar+jqwidgets
- C#语法糖之Cookies操作类 asp.net
- UWP开发入门(十八)——使用ContentControl减少页面元素数量
- SQL实现分组查询取前几条记录
- Sprint回顾-0525
- EF容器---代理类对象
- C#设计模式——适配器模式(Adapter Pattern)
- C#的注释和快速开启工具的命令
- C# 修改电脑DNS和IP方法