2017-03-20 15 views
0

아래의 코드를 사용하여 Right way of determining internet speed in iOS 8 내 앱에서 속도 테스트를 수행하지만 테스트를 수행하고 속도 테스트 도구 http://www.speedtest.net/과 비교할 때 내 앱의 결과는 speedTest.net보다 절반 응용 프로그램의 속도 결과는 speedtest.net 결과가 2Mbps의 또는이다 1Mbps의 더swift3를 사용하여 다운로드 속도 테스트 앱을 만드는 가장 좋은 방법은 무엇입니까?

class ViewController: UIViewController, NSURLSessionDelegate, NSURLSessionDataDelegate { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    testDownloadSpeedWithTimout(5.0) { (megabytesPerSecond, error) ->() in 
     print("\(megabytesPerSecond); \(error)") 
    } 
} 

var startTime: CFAbsoluteTime! 
var stopTime: CFAbsoluteTime! 
var bytesReceived: Int! 
var speedTestCompletionHandler: ((megabytesPerSecond: Double?, error: NSError?) ->())! 

func testDownloadSpeedWithTimout(timeout: NSTimeInterval, completionHandler:(megabytesPerSecond: Double?, error: NSError?) ->()) { 
    let url = NSURL(string: "http://insert.your.site.here/yourfile")! 

    startTime = CFAbsoluteTimeGetCurrent() 
    stopTime = startTime 
    bytesReceived = 0 
    speedTestCompletionHandler = completionHandler 

    let configuration = NSURLSessionConfiguration.ephemeralSessionConfiguration() 
    configuration.timeoutIntervalForResource = timeout 
    let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil) 
    session.dataTaskWithURL(url).resume() 
} 

func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) { 
    bytesReceived! += data.length 
    stopTime = CFAbsoluteTimeGetCurrent() 
} 

func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) { 
    let elapsed = stopTime - startTime 
    guard elapsed != 0 && (error == nil || (error?.domain == NSURLErrorDomain && error?.code == NSURLErrorTimedOut)) else { 
     speedTestCompletionHandler(megabytesPerSecond: nil, error: error) 
     return 
    } 

    let speed = elapsed != 0 ? Double(bytesReceived)/elapsed/1024.0/1024.0 : -1 
    speedTestCompletionHandler(megabytesPerSecond: speed, error: nil) 
} 

} 

답변

0

내가 다른 서버 내 파일을 넣고 각각의 문제는 속도 결과가 그래서 나에게 다른 결과를 제공하는 서버에 따라 달라집니다 당신이에서 다운로드 및 솔루션은 다중 서버에 파일을 갖고 클라이언트에 가장 적합한 서버를 탐지하여 서버에서 다운로드하는 것입니다.