ios 网速监控_iOS 监测网络状态
在网络应用中,有的时候需要对用户设备的网络状态进行实时监控,有两个目的:
(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 监测网络状态相关推荐
- ios 网速监控_IOS实时监控上传下载速度
在开发中要获取网络类型是很简单的,导入Reachability直接获取状态就行了,现在我们要做一个类似下载器的那种实时把上传下载速度显示出来. 需要用到的头文件 使用Reachability 要测速度 ...
- EveryDay-Shell之ifconfig输出详解“——netspeed.sh网速监控脚本
对应文件中,比如p1p1设备对应目录: $cd /sys/class/net/p1p1/statistics $ls -l -r--r--r-- 1 root root 4096 2月 4 14: ...
- windows10网速监控(netspeedmonitor)
最后效果: 1.首先下载netspeedmonitor 传送门:链接:https://pan.baidu.com/s/1WlDnp8yh4ypEw0iH9MpiIg?pwd=xq9v 提取码:xq9 ...
- Ubuntu 16.04安装基于nethogs衍生的网络监控软件(应用实时网速监控)
基于nethogs衍生的网络监控软件有如下所列举的: nettop显示数据包类型,按数据包的大小或数量排序. ettercap是以太网的网络嗅探器/拦截器/记录器 darkstat通过主机,协议等方式 ...
- Windows网络通信流量和网速监控设计(一)
第二篇文章连接 文章目录 三种数据通信传输模式 一.单工通信 二.半双工通信 三.全双工通信 相关基础知识 1.__stdcall 2.GetIfTable()函数 3.MIB_IFTABLE结构体 ...
- Mac 状态栏工具statmenus的下载和激活(网速监控、磁盘和内存健康等)
-学习下载 https://bjango.com/mac/istatmenus/ iStat Menus 6的 Email: 982092332@qq.com SN: GAWAE-FCWQ3-P8NY ...
- TrafficMonitorr网速流量监控/CPU内存率查看工具
简介: Traffic Monitor (网络流量监控器) 是一款 Windows 平台上开源免费的实时网速监控软件.它体积小巧而且是绿色软件,能以类似 360 助手的「桌面悬浮窗」的形式,保持在桌面 ...
- 轻量级网速、CPU及内存利用率监控软件
360总是无缘无故地推送广告,安装软件.名义杀毒,实际相比流氓.对于360,只看好那个显示资源使用比例的图标. 今天分享一个轻量级的网速.CPU及内存利用率监控软件,总大小就1.3Mb,没广告.可以去 ...
- 在状态栏StatusBar中添加网速实时显示
本篇文章教大家如何在状态栏中加入网速实时监控,效果如下图所示 上图就是要实现的效果,我们可以通过自定义一个View,让它继承TextView,然后在该View内部添加获取实时网络并显示出来的逻辑,废话 ...
- python request下载文件时、显示进度以及网速_实时网速显示_实例_python
import psutil import time from tkinter import * def make_app(): app =Tk() app.geometry('200x100') ap ...
最新文章
- C#注解属性的感想一:
- C语言学习笔记(16)
- linux下部署tomcat服务器之安装jdk
- 2012 人民搜索 实习生招聘 笔试题
- 【珍藏】 2012.NET开发必看资料53个+经典源码77个—下载目录
- python 初步学习
- python相关函数_Python 函数相关概念
- 公司如何实施 EDI 项目?
- 手写识别是图像识别吗_创建日语手写识别器
- 058.克鲁斯卡尔(Kruskal)算法的原理以及解决最小生成树问题
- 电脑能上qq等软件但是浏览器打不开网页
- 珍惜当下,路会慢慢走出来的
- 关于仿写00片刻企业站
- 解决 Navigating to current location (/userslist) is not allowed问题。
- 树莓派4b使用vncview连接报错:Cannot currently show the desktop
- cnpm的安装(超级详细版)
- 云灾备、云容灾、云备份、数据库上云、线下线上云灾备、灾备有云等
- 一加3t刷机后还卡_一加3T刷机包
- 电子电路基础 (3)——示波器的使用
- BXA联手ONEROOT推出数字金融服务