虽然在AFNetworking
和Alamofire
中,提供的有检测手机网络的功能,但是只是知道了用户的网络连接方式,并不清楚用户的真实用户体验,可能用户虽然连接的是wifi,但是网速还不如3G网络。所以只要不是断网条件,用户发起请求时的真实网速更重要。
所以就封装了这个功能,可以通过该项目去ping
一下请求的域名,以便得到返回的时间,去判断用户网络是否在正常范围。
该功能是基于苹果封装的SimplePing再次进行封装优化,使用更加简单,三步即可调用
通过CocoaPods安装
pod 'DDPingTools'
1、创建ping对象,hostName为自定义的域名
let pingTools = DDPingTools(hostName: "www.apple.com")
2、发起ping
pingTools.start(pingType: .any, interval: .second(10)) { (response, error) in
print(response?.pingAddressIP ?? "")
}
interval
大于0时,会在固定间隔重复发送ping请求,等于0时只会发起一次ping请求
其中响应的response
包含了以下内容
pingAddressIP
域名对应的ip地址responseTime
ping响应的时间responseBytes
ping响应的字节数
3、关闭请求
pingTools.stop()
4、可选配置
public var timeout: HDPingTimeInterval = .millisecond(1000) //自定义超时时间,默认1000毫秒,设置为0则一直等待
public var debugLog = true //是否开启日志输出
public var stopWhenError = false //遇到错误停止ping
public private(set) var isPing = false //可以判断当前是否有ping任务在进行中
public var showNetworkActivityIndicator: NetworkActivityIndicatorStatus = .auto //是否在状态栏显示
注意:网站或者连接的路由器如果设置了禁止ping,那么ping的时候会报错,需要解除该限制才可以正常使用
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/1296.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!