ios 快速判断当前网络状态(三种方法)

简介: 1️⃣-利用AFN框架//1.创建网络状态监测管理者AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager  sharedManager];//2.

1️⃣-利用AFN框架

//1.创建网络状态监测管理者

AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager  sharedManager];

//2.监听改变

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus  status) {

switch (status) {

case  AFNetworkReachabilityStatusUnknown:

NSLog(@"未知");

break;

case AFNetworkReachabilityStatusNotReachable:

NSLog(@"没有网络");

[MBProgressHUD showError:@"网络不可用,请连接网络"];

break;

case AFNetworkReachabilityStatusReachableViaWWAN:

NSLog(@"3G|4G");

break;

case AFNetworkReachabilityStatusReachableViaWiFi:

NSLog(@"WiFi");

break;

default:

break;

}

}];

[manager startMonitoring];//开始监听

}

---------------------------------------------------

2️⃣-利用系统状态栏判断网络状态

// 状态栏是由当前app控制的,首先获取当前app

UIApplication *app = [UIApplication sharedApplication];

NSArray *children = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];

int type = 0;

for (id child in children) {

if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {

type = [[child valueForKeyPath:@"dataNetworkType"] intValue];

}

}

switch (type) {

case 1:

return @"2G";

break;

case 2:

return @"3G";

case 3:

return @"4G";

case 5:

return @"WIFI";

default:

return @“NO-WIFI";//代表未知网络

break;

}

警告:此方法存在一定的局限性,比如当状态栏被隐藏的时候,无法使用此方法。

----------------------------------------------------------

3️⃣-通过Reachability框架

Reachability是一个在iOS系统环境下检测iOS设备当前的网络环境的库。它的主要功能是监测三种网络环境:2G/3G/4G、WiFi网络、无网络。在应用的运行状态下,实时监测网络连接方式的变更,及时给出通知。

Reachability的使用

首先需要在GitHub上下载Reachability的压缩包,解压后将Reachability.h和Reachability.m文件拖入工程当中,在使用的地方引入头文件即可(或者使用cocoapods管理第三方库)。

1.直接获取当前网络环境:

//可以使用多种方式初始化

Reachability*reach=[Reachability reachabilityWithHostName:@"www.hcios.com"];

//2.判断当前的网络状态

switch([reach currentReachabilityStatus]){

case  ReachableViaWWAN:

NSLog(@"正在使用移动数据网络");

break;

case  ReachableViaWiFi:

NSLog(@"正在使用WiFi");

break;

default:

NSLog(@"无网络");

break;

}

//根据currentReachabilityStatus方法获取当前的网络环境,ReachableViaWWAN表示移动数据网络,ReachableViaWiFi表示WiFi网络,NotReachable表示没有接入网络。

通知的方式获取当前网络环境:

//可以使用多种方式初始化

Reachability *reach=[Reachability reachabilityWithHostName:@"www.hcios.com"];

//通知中心注册通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:

@selector(reachabilityChanged:)name:kReachabilityChangedNotification object:nil];

//Reachability实例调用startNotifier方法启动网络状态监测

[reach startNotifier];

//收到通知调用的方法

-(void)reachabilityChanged:(NSNotification*)notification{

Reachability *reach=[notification object];

//判断网络状态

if(![reach isReachable]){

NSLog(@"网络连接不可用");

}else{

if([reach currentReachabilityStatus]==ReachableViaWiFi){

NSLog(@"正在使用WiFi");

}else if([reach currentReachabilityStatus]==ReachableViaWWAN){

NSLog(@"正在使用移动数据");

}

}

}

通过通知的方式使用Reachability是在程序中经常使用的,Reachability可以在用户的网络状态发生改变时,及时给出通知提醒,防止数据流量的快速流失,在实际的项目应用中是十分常见的。

目录
相关文章
|
4天前
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
118 89
|
13天前
|
机器学习/深度学习 数据采集 人工智能
GeneralDyG:南洋理工推出通用动态图异常检测方法,支持社交网络、电商和网络安全
GeneralDyG 是南洋理工大学推出的通用动态图异常检测方法,通过时间 ego-graph 采样、图神经网络和时间感知 Transformer 模块,有效应对数据多样性、动态特征捕捉和计算成本高等挑战。
47 18
GeneralDyG:南洋理工推出通用动态图异常检测方法,支持社交网络、电商和网络安全
|
1月前
|
机器学习/深度学习 数据采集 人工智能
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
层次化Softmax算法通过引入Huffman树结构,将传统Softmax的计算复杂度从线性降至对数级别,显著提升了大规模词汇表的训练效率。该算法不仅优化了计算效率,还在处理大规模离散分布问题上提供了新的思路。文章详细介绍了Huffman树的构建、节点编码、概率计算及基于Gensim的实现方法,并讨论了工程实现中的优化策略与应用实践。
75 15
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
|
1月前
|
域名解析 缓存 网络协议
优化Lua-cURL:减少网络请求延迟的实用方法
优化Lua-cURL:减少网络请求延迟的实用方法
|
2月前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
200 1
|
2月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
45 2
|
2月前
|
安全 算法 网络安全
量子计算与网络安全:保护数据的新方法
量子计算的崛起为网络安全带来了新的挑战和机遇。本文介绍了量子计算的基本原理,重点探讨了量子加密技术,如量子密钥分发(QKD)和量子签名,这些技术利用量子物理的特性,提供更高的安全性和可扩展性。未来,量子加密将在金融、政府通信等领域发挥重要作用,但仍需克服量子硬件不稳定性和算法优化等挑战。
|
3月前
|
机器学习/深度学习 计算机视觉
TPAMI 2024:计算机视觉中基于图神经网络和图Transformers的方法和最新进展
【10月更文挑战第3天】近年来,图神经网络(GNNs)和图Transformers在计算机视觉领域取得显著进展,广泛应用于图像识别、目标检测和场景理解等任务。TPAMI 2024上的一篇综述文章全面回顾了它们在2D自然图像、视频、3D数据、视觉与语言结合及医学图像中的应用,并深入分析了其基本原理、优势与挑战。GNNs通过消息传递捕捉非欧式结构,图Transformers则结合Transformer模型提升表达能力。尽管存在图结构构建复杂和计算成本高等挑战,但这些技术仍展现出巨大潜力。论文详细内容见:https://arxiv.org/abs/2209.13232。
214 3
|
5月前
|
存储 缓存 网络协议
网络丢包排查方法
网络丢包排查方法
|
5月前
|
监控 安全 iOS开发