AFNetworking
アップロード帯域幅の大まかな見積もりを取得するために使用しようとしています。NSObject
と を観察するサブクラスがありAFNetworkingOperationDidStartNotification
ますAFNetworkingOperationDidFinishNotification
。AFHTTPRequestOperation
進行状況ブロックに書き込むと予想される合計バイト数を取得します。
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
if (lastUploadSize != totalBytesExpectedToWrite)
lastUploadSize = totalBytesExpectedToWrite;
}];
開始時と終了時に、現在の日付をそれぞれの iVar に保存します。calculateBandwidth
次に、簡単な計算を行うメソッドを呼び出します。
-(void)calculateBandwidth {
NSTimeInterval difference = [uploadFinishTime timeIntervalSinceDate:uploadStartTime];
float bandwidth = (lastUploadSize * 0.0078125) / difference;
PLog(@"Bandwidth (calculated): %f kbps", bandwidth);
if ([_delegate respondsToSelector:@selector(networkClientDidUpdateBandwidth:time:withSize:)])
[_delegate networkClientDidUpdateBandwidth:bandwidth time:difference withSize:lastUploadSize];
}
しかし、帯域幅の結果はずれているようです。私が間違っていなければ、0.0078125 キロビット = 1 バイトです。私は数学で何かを逃していますか?
同様の方法を使用して、より複雑な帯域幅検出器を作成する予定ですが、今のところ、アップロードごとに正確なアップロード帯域幅を取得したいと考えています。