Swift:检查是否使用Wifi或Cellular网络&检测网络速度?

时间:2017-09-27 18:17:03

标签: ios swift cellular-network

我想知道是否有一种简单的方法可以找出用户是使用wifi还是蜂窝数据(也许是CoreTelephony)?

我主要对实际网络速度感兴趣,以确定我应该为AVPLayer设置的视频质量等级(通过preferredPeakBitRate)。

1 个答案:

答案 0 :(得分:-1)

涉及两个步骤。首先检测您所在的网络类型。 第二是带宽是多少。下面有两个功能来执行每项任务

此功能用于识别您所在的网络。

enum ReachabilityType: CustomStringConvertible {
case wwan
case wiFi
var description: String {
    switch self {
    case .wwan: return "WWAN"
    case .wiFi: return "WiFi"
    }
}

}

此功能用于获取带宽速度。

func bandWidthCheck()  {
let sample = URL(string: "http:exampleURL")
let request = URLRequest(url: sample!)
let session = URLSession.shared
let startTime = Date()
let task =  session.dataTask(with: request) { (data, resp, error) in
    guard error == nil && data != nil else{
        print("connection error or data is nill")
        return
    }
    guard resp != nil else{
        print("response is nill")
        return
    }
    let size  = CGFloat( (resp?.expectedContentLength)!) / 1000000.0
    print(size)

    let time = CGFloat( Date().timeIntervalSince(startTime))
    print("elapsed: \(time)")
    print("Speed: \(size/time) Mb/sec")
}
task.resume()

}