Determine the speed on internet programmatically

step 1: Take downloadable file url and configure a it with a NSURLSession and its method dataTaskWithUrl.

step 2 : Integrate NSURLSessionDelegate, NSURLSessionDataDelegate method in your controller.

step 3: Take two CFAbsoluteTime variable which store starTime and assign CFAbsoluteTimeGetCurrent() and second one stopTime in didReceiveData: Delegate method.

step 4 : Count speed like this

  CFAbsoluteTime elapsedTime = stopTime - startTime;
  float speedOfConnection = elapsedTime != 0 ? [data length] / (stopTime - startTime) / 1024.0 / 1024.0 : -1;

If you use NSURLConnection to grab a large file (say, 1 MB or greater), you can use a delegate to track intermediate download progress.

Specifically: If you measure the difference in bytes downloaded and the difference in time between calls to the delegate, then you can calculate the ongoing speed in bytes per second (or other time unit).

Tags:

Iphone