iOS如何监听弱网?
场景:
iOS中我们可能经常用到监听网络,不过大部分是监听网络的类型,即2G/3G/4G WIFI,是否连接网络,然而测试人员对APP进行测试时候经常会有一个弱网测试,即在弱网环境下对APP进行测试,这个时候APP会出现各种问题,比如接口请求不到数据等问题,那么我们有没有办法像监听网络一样去监听弱网呢?
弱网测试:我们的经常用的抓包工具Charles就可以简易的模拟弱网环境,而我们的真机也可以在调试时候模拟弱网
设置-->开发者-->Status-->Enable打开,然后选择下面的每个选项,就可以模拟弱网了
思考1:
网上查了资料并没有直接监听弱网的资料,那么有什么其他办法可以做到这一点呢?
这个时候我想到了终端的ping命令,对一个baidu.com的ping结果如下:
那么能不能在iPhone上去ping我们的服务器,通过ping的结果去判断我们的网络环境呢?不多说,尝试一下。
Apple提供了一个系统的ping库,有兴趣的可以去看
https://developer.apple.com/library/content/samplecode/SimplePing/Listings/Common_SimplePing_m.html#//apple_ref/doc/uid/DTS10000716-Common_SimplePing_m-DontLinkElementID_4
我偷懒网上找了一个封装好的三方库STSimplePing,加入工程后进行测试结果如下:
正常网络情况下:
将弱网模拟调至100% lose结果如下:
结果都能收集到,若通过Ping判断网络方案合理的话,那么我们可以通过时间和丢包率来判断网络情况
思考2:
参考文档:http://www.cocoachina.com/ios/20160224/15407.html
分析了ReallyReachaAbility监控的原理,ReachaAbility监控网络状态的变化,ping判断网络是否真实连接及状态,通过定时器时时判断网络状态及真实的网络连接情况