2024-05-27T05:22:35.png

虽然在AFNetworkingAlamofire中,提供的有检测手机网络的功能,但是只是知道了用户的网络连接方式,并不清楚用户的真实用户体验,可能用户虽然连接的是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的时候会报错,需要解除该限制才可以正常使用


☟☟可点击下方广告支持一下☟☟

最后修改:2024 年 05 月 27 日
请我喝杯可乐,请随意打赏: ☞已打赏列表