2017-09-27 5 views
0

ユーザがWi-Fiや携帯電話のデータ(おそらくCoreTelephony)を使用しているかどうかを簡単に調べる方法があるのでしょうか?スイフト:Wi-FiまたはCellularネットワークでネットワーク速度を検出しているかどうかを確認しますか?

私は主に、AVPlayerに設定する必要があるビデオの品質のレベルを決定するための実際のネットワーク速度に興味があります(preferredPeakBitRate経由)。

答えて

0

2つのステップがあります。最初に、どのタイプのネットワークがあなたのものであるかを検出します。 秒は帯域幅です。以下の2つの機能を使用して各タスクを実行します。

この機能は、使用しているネットワークを識別するための機能です。

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() 

}

関連する問題