在网络应用中,有的时候需要对用户设备的网络状态进行实时监控,有两个目的:

(1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能)

(2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验

WIFI网络:自动下载高清图片

4G/3G网络:只下载缩略图

没有网络:只显示离线的缓存数据

常用的有以下两种方法:

(1)、使用苹果观法提供的检测iOS设备网络环境用的库 Reachablity

(2)、使用AFN框架中的AFNetworkReachabilityManager来监听网络状态的改变

一、苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态

使用之前请从Apple网站下载示例:http://xiazai.jb51.net/201608/yuanma/Reachability(jb51.net).rar

然后将Reachability.h 和 Reachability.m 加到自己的项目中,并引用 SystemConfiguration.framework,就可以使用了。

Reachability 中定义了3种网络状态:

typedef enum : NSInteger {

NotReachable = 0, //无连接

ReachableViaWiFi, //使用3G/GPRS网络

ReachableViaWWAN //使用WiFi网络

} NetworkStatus;

我们可以在程序启动以后启动实时监测

// AppDelegate.m

@interface AppDelegate ()

@property (nonatomic, strong) Reachability *reachability;

@end

// 程序启动器,启动网络监视

- (void)applicationDidFinishLaunching:(UIApplication *)application {

// 设置网络检测的站点

NSString *remoteHostName = @"www.apple.com";

self.reachability = [Reachability reachabilityWithHostName:remoteHostName];

// 设置网络状态变化时的通知函数

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:)

name:@"kNetworkReachabilityChangedNotification" object:nil];

[self updateStatus];

}

- (void)reachabilityStatusChange:(NSNotification *)notification

{

Reachability* curReach = [notification object];

NSParameterAssert([curReach isKindOfClass:[Reachability class]]);

[self updateInterfaceWithReachability:curReach];

}

- (void)updateInterfaceWithReachability:(Reachability *)reachability

{

if (reachability == _reachability)

{

NetworkStatus netStatus = [reachability currentReachabilityStatus];

switch (netStatus)

{

case NotReachable: {

NSLog(@"没有网络!");

break;

}

case ReachableViaWWAN: {

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

break;

}

case ReachableViaWiFi: {

NSLog(@"WiFi");

break;

}

}

}

}

- (void)dealloc

{

[_reachability stopNotifier];

[[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];

}

二、使用AFN框架中的AFNetworkReachabilityManager来监听网络状态的改变

//使用AFN框架来检测网络状态的改变

-(void)AFNReachability

{

//1.创建网络监听管理者

AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

//2.监听网络状态的改变

/*

AFNetworkReachabilityStatusUnknown = 未知

AFNetworkReachabilityStatusNotReachable = 没有网络

AFNetworkReachabilityStatusReachableViaWWAN = 3G

AFNetworkReachabilityStatusReachableViaWiFi = WIFI

*/

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

switch (status) {

case AFNetworkReachabilityStatusUnknown:

NSLog(@"未知");

break;

case AFNetworkReachabilityStatusNotReachable:

NSLog(@"没有网络");

break;

case AFNetworkReachabilityStatusReachableViaWWAN:

NSLog(@"3G");

break;

case AFNetworkReachabilityStatusReachableViaWiFi:

NSLog(@"WIFI");

break;

default:

break;

}

}];

//3.开始监听

[manager startMonitoring];

}

ios 网速监控_iOS 监测网络状态相关推荐

  1. ios 网速监控_IOS实时监控上传下载速度

    在开发中要获取网络类型是很简单的,导入Reachability直接获取状态就行了,现在我们要做一个类似下载器的那种实时把上传下载速度显示出来. 需要用到的头文件 使用Reachability 要测速度 ...

  2. EveryDay-Shell之ifconfig输出详解“——netspeed.sh网速监控脚本

    对应文件中,比如p1p1设备对应目录: $cd /sys/class/net/p1p1/statistics $ls -l -r--r--r-- 1 root root 4096  2月  4 14: ...

  3. windows10网速监控(netspeedmonitor)

    最后效果: 1.首先下载netspeedmonitor 传送门:链接:https://pan.baidu.com/s/1WlDnp8yh4ypEw0iH9MpiIg?pwd=xq9v  提取码:xq9 ...

  4. Ubuntu 16.04安装基于nethogs衍生的网络监控软件(应用实时网速监控)

    基于nethogs衍生的网络监控软件有如下所列举的: nettop显示数据包类型,按数据包的大小或数量排序. ettercap是以太网的网络嗅探器/拦截器/记录器 darkstat通过主机,协议等方式 ...

  5. Windows网络通信流量和网速监控设计(一)

    第二篇文章连接 文章目录 三种数据通信传输模式 一.单工通信 二.半双工通信 三.全双工通信 相关基础知识 1.__stdcall 2.GetIfTable()函数 3.MIB_IFTABLE结构体 ...

  6. Mac 状态栏工具statmenus的下载和激活(网速监控、磁盘和内存健康等)

    -学习下载 https://bjango.com/mac/istatmenus/ iStat Menus 6的 Email: 982092332@qq.com SN: GAWAE-FCWQ3-P8NY ...

  7. TrafficMonitorr网速流量监控/CPU内存率查看工具

    简介: Traffic Monitor (网络流量监控器) 是一款 Windows 平台上开源免费的实时网速监控软件.它体积小巧而且是绿色软件,能以类似 360 助手的「桌面悬浮窗」的形式,保持在桌面 ...

  8. 轻量级网速、CPU及内存利用率监控软件

    360总是无缘无故地推送广告,安装软件.名义杀毒,实际相比流氓.对于360,只看好那个显示资源使用比例的图标. 今天分享一个轻量级的网速.CPU及内存利用率监控软件,总大小就1.3Mb,没广告.可以去 ...

  9. 在状态栏StatusBar中添加网速实时显示

    本篇文章教大家如何在状态栏中加入网速实时监控,效果如下图所示 上图就是要实现的效果,我们可以通过自定义一个View,让它继承TextView,然后在该View内部添加获取实时网络并显示出来的逻辑,废话 ...

  10. python request下载文件时、显示进度以及网速_实时网速显示_实例_python

    import psutil import time from tkinter import * def make_app(): app =Tk() app.geometry('200x100') ap ...

最新文章

  1. C#注解属性的感想一:
  2. C语言学习笔记(16)
  3. linux下部署tomcat服务器之安装jdk
  4. 2012 人民搜索 实习生招聘 笔试题
  5. 【珍藏】 2012.NET开发必看资料53个+经典源码77个—下载目录
  6. python 初步学习
  7. python相关函数_Python 函数相关概念
  8. 公司如何实施 EDI 项目?
  9. 手写识别是图像识别吗_创建日语手写识别器
  10. 058.克鲁斯卡尔(Kruskal)算法的原理以及解决最小生成树问题
  11. 电脑能上qq等软件但是浏览器打不开网页
  12. 珍惜当下,路会慢慢走出来的
  13. 关于仿写00片刻企业站
  14. 解决 Navigating to current location (/userslist) is not allowed问题。
  15. 树莓派4b使用vncview连接报错:Cannot currently show the desktop
  16. cnpm的安装(超级详细版)
  17. 云灾备、云容灾、云备份、数据库上云、线下线上云灾备、灾备有云等
  18. 一加3t刷机后还卡_一加3T刷机包
  19. 电子电路基础 (3)——示波器的使用
  20. BXA联手ONEROOT推出数字金融服务

热门文章

  1. 回顾一年的工作历程_回顾一年来的工作
  2. 要点初见:开源AI绘画工具Stable Diffusion代码分析(文本转图像)、论文介绍(下)
  3. 计算机房的红蜘蛛软件怎么取消,如何脱离学校机房的红蜘蛛控制软件的控制?...
  4. 文华财经程序化交易模型
  5. 谈谈架构 -- architect
  6. 逍遥模拟器怎么开启vt?
  7. m基于迫零ZF准则的通信均衡器的matlab仿真
  8. 莫再用唐僧式的唠叨施加影响----家长式管理者实施HOLA的障碍
  9. 安装MySQL8.0+,数据库初始化失败错误解决办法
  10. 软考网工-第四章知识产权与标准化