2017-03-20 30 views
0

我使用下面的代码快速从这个问题Right way of determining internet speed in iOS 8快速测试在我的应用程序,但是当进行测试,并与速度测试工具http://www.speedtest.net/比较,我的应用程序的结果是比speedTest.net少一半,如果我的应用速度1Mbps的结果的speedtest.net结果为2Mbps以上使用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

我把我的文件在不同的服务器上,每个人给我不同的结果,所以这个问题是速度的结果取决于服务器上的你下载解决方案是在多台服务器上安装文件,并为客户端检测最佳服务器并从中下载。

相关问题