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