私はインターネットに接続しているかどうかを確認することができます。しかし、その接続の速度を決定する方法はありますか? アップロード速度とダウンロード速度を別々に計算しようとしています。プログラムによるインターネットの速度の決定
どのようにプログラム上でインターネット上の速度を決定するのですか?
私はインターネットに接続しているかどうかを確認することができます。しかし、その接続の速度を決定する方法はありますか? アップロード速度とダウンロード速度を別々に計算しようとしています。プログラムによるインターネットの速度の決定
どのようにプログラム上でインターネット上の速度を決定するのですか?
NSURLConnection
を使用して大きなファイル(1 MB以上など)を取得する場合は、delegateを使用してダウンロードの進行状況を追跡できます。
具体的には、ダウンロードされたバイトの違いとデリゲートへの呼び出しの時間の差を測定すると、進行中の速度をバイト/秒(または他の時間単位)で計算できます。
注:あなたのアプリが自分の3G接続で> 1MBをダウンロードしようとすると、それが* slooooow *であることを確認するだけで、私は満足できません(私のキャリアはあるかもしれません)。実際、私は貧弱なデータの限界を無駄に食べていると誇らしく思っています。あなたが繰り返しそれを行うならば、もっともっと。 (アプリケーションが実際に必要とするデータ転送を測定している場合は、時間がかかりますが、私は管理します) – Piskvor
ああ、確かです。しかし、これは、通常の業務を行っている間に進行する通常のダウンロードの進行中のスピードを提供する可能性があります。または、アプリケーションがネットワークテストアプリケーションの場合、エンドユーザーはネットワーク接続を介して大きなファイルを要求することを知っているので、これを実行します。だから私はそれがインテリジェントかつ適切に使用されるならば、それがまだ携帯電話接続のための有用なアプローチだと主張するでしょう... –
最も確かに。 – Piskvor
手順1:ダウンロード可能なファイルURLを取得し、NSURLSession
とその方法dataTaskWithUrl
で構成します。
手順2:NSURLSessionDelegate, NSURLSessionDataDelegate
メソッドをコントローラに組み込みます。
ステップ3: STARTIMEを格納2つのCFAbsoluteTime
変数を取り、didReceiveData:
委任方法でCFAbsoluteTimeGetCurrent()
2つ目stopTime
を割り当てます。
ステップ4:カウント速度として、この
CFAbsoluteTime elapsedTime = stopTime - startTime;
float speedOfConnection = elapsedTime != 0 ? [data length]/(stopTime - startTime)/1024.0/1024.0 : -1;
クリア命令、ありがとう! – ArtStyle
のようにそれはあなたの質問に答えていませんが、余談として、私の心の中のアプリは、実際に利用できるものは何でも速度をサポートすることができるはずです人々は同じデバイスを複数のインターネットソースに接続します(家庭や職場でのWiFi、3Gなど)。実際には単一のソース速度でも急速に変化する可能性があります。 –
インターネット速度や無線LANの強度を測定できるようになりましたか? – Imran