0
사용자가 wifi 또는 셀룰러 데이터 (CoreTelephony 등)에 있는지 쉽게 확인할 수 있는지 궁금합니다.스위프트 : Wi-Fi 또는 셀룰러 네트워크에 있는지 & 네트워크 속도를 감지 했습니까?
주로 AVPLayer에 대해 (preferredPeakBitRate를 통해) 설정해야하는 비디오 품질 수준을 결정하기 위해 실제 네트워크 속도에만 관심이 있습니다.
사용자가 wifi 또는 셀룰러 데이터 (CoreTelephony 등)에 있는지 쉽게 확인할 수 있는지 궁금합니다.스위프트 : Wi-Fi 또는 셀룰러 네트워크에 있는지 & 네트워크 속도를 감지 했습니까?
주로 AVPLayer에 대해 (preferredPeakBitRate를 통해) 설정해야하는 비디오 품질 수준을 결정하기 위해 실제 네트워크 속도에만 관심이 있습니다.
두 단계가 있습니다. 먼저 어떤 유형의 네트워크인지 확인하십시오. 초는 대역폭입니다. 아래의 두 가지 기능을 통해 각 작업을 수행 할 수 있습니다.
이 기능은 현재 사용중인 네트워크를 식별하는 데 사용됩니다.
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()
}