iOS APP中嵌入网速监测功能

企鹅的手机管家、一些网页都提供了网速监测功能。在开发过程中我们偶尔也需要开发这个模块,以提示用户网速的状况,增强用户体验。

常见的网络测速方案

通过调研发现,目前常见的网络测速方案只有两种:

  • 方案1:通过上传和下载数据包,使用 TotalSize / TotalTime 来计算真实的上传和下载速率是多少

  • 方案2:通过读取网卡数据来计算,读取上一秒的整体流量消耗 T1,然后读取当前的流量消耗 T2,那么 T2 - T1 其实可以表示为当前的一个网速情况。同时这个流量数据是可以区分蜂窝网络、Wi-Fi的,也可以区分哪些是上行流量,那些是下行流量。

两种方案各有优劣,可以在合适的场合来选择对应的方案

  • 第一种方案感觉是比较准确,这个时候是真实的在下载或上传数据,比较充分的利用了当前的带宽,计算的网速也比较接近真实的网速值。但是蜂窝网络下,会消耗用户的少量流量。

  • 第二种方案在下载和上传东西时,计算的值和第一种方案比较接近。但是如果当前系统内没有 App 在被使用,处于静止状态的话,其实当前读取的流量值是比较小的,无法反映出网速情况,但是可以实时反映流量消耗状况。

    具体实施的方案有如下:

方案一:使用苹果封装的Reachability进行网络检测


如何下载Reachability?

打开Xcode,用快捷键(shift + command + 0)打开并搜索Reachability,如下图,下载即可。






示例代码:

[objc]  view plain  copy
  1. #import "Reachability.h"  
  2.   
  3. @interface LeftViewController ()  
  4. @property (strongnonatomicReachability *reachability;  
  5. @end  
  6.   
  7. @implementation LeftViewController  
  8.   
  9. - (void)viewDidLoad {  
  10.     [super viewDidLoad];  
  11.   
  12.     // 此处一定要声明全局变量,否则通知是不会执行的   
  13.   
  14.     self.reachability = [Reachability reachabilityForInternetConnection];  
  15.   
  16.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityStatusChange:) name:kReachabilityChangedNotification object:_reachability];  
  17.     [_reachability startNotifier];  
  18.       
  19. }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值