我想知道是否有一种简单的方法可以找出用户是使用wifi还是蜂窝数据(也许是CoreTelephony)?
我主要对实际网络速度感兴趣,以确定我应该为AVPLayer设置的视频质量等级(通过preferredPeakBitRate)。
答案 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()
}